正则表达式
简介
- 描述与检测字符串的工具
- 一个正则表达式也是一个字符串
- 检测字符串是否符合某种规则。
- 如匹配“111”是否满足“仅含有数字”这个规则。这个例子显然是满足的。
描述规则
(符合规则成为匹配)
-
精确匹配:(re的字符数=目标字符数)
- 相等匹配:“000”匹配‘000’
- 转义字符:\s表示空隔,‘\_’表示下划线
- 字符匹配:
- 数字:‘\d’匹配任意数字。 ‘\d\d\d’匹配‘100’
- 字符:‘\w’匹配任意字母或数字。‘\w\w\w’匹配‘py3’
- 注意:\w只可以匹配字母或数字。 无法匹配.!@#$等
- ‘.’:点 '.'表示任意字符
- [] 匹配:[ ]表述一个字符,该字符的描述方法如下:
[0-9a-zA-Z\_]
可以匹配一个数字、字母或者下划线- 注意:[]中多个类型是或的关系
- ()匹配:圆括号()是组:
- (abc|bcd|cde),表示这一段是abc、bcd、cde三者之一均可,顺序也必须一致
-
范围匹配:(re字符数≠目标字符数)
在一个字符后:
- 用
*
表示任意个字符(包括0个:- ‘\d*’ 匹配 任意个数字
- 用
+
表示至少一个字符:- ‘\d+’ 匹配 至少1个数字
- 用
?
表示0个或1个字符:- '\w’匹配 1个或者0个\w
- 用
{n}
表示n个字符:- ‘1{10}’ 匹配 ‘1111111111’
- 用
{n,m}
表示n-m个字符:
- 用
-
行操作:
^
表示行的开头:如^\d
表示必须以数字开头。$
表示行的结束:如\d$
表示必须以数字结束。
使用re
>>> import re
>>> re.match(r'^\d{3}\-\d{3,8}$', '010-12345')
<_sre.SRE_Match object; span=(0, 9), match='010-12345'>
>>> re.match(r'^\d{3}\-\d{3,8}$', '010 12345')
-
判断:
match()
方法判断是否匹配,如果匹配成功,返回一个Match
对象,否则返回None
。常见的判断方法就是:re.match(‘规则’,‘待匹配字符串’)
-
分组:
>>> re.split(r'[\s\,]+', 'a,b, c d') ['a', 'b', 'c', 'd']
规则是:re.split(‘分开的节点’,‘目标字符串’)
返回是一个list