re.match与re.search的区别
re.match函数只匹配字符串开始的字符,如果开始的字符不符合正则表达式,匹配就会失败,函数返回None。
re.search方法匹配整个字符串,直到找到一个匹配的对象,匹配结束后没找到匹配值才返回None。
. 匹配除\ 之外的任何单个字符,要匹配包括\ 在内的任意字符可以使用[.\ ]
\d 匹配任意一个数字字符,等价于[0-9]
\D 匹配任意一个非数字字符,等价于[^0-9]
\s 匹配任意空白字符,包括空格、制表符、换页符等,等价于[\f\ \ \t\v]
\S 匹配任意非空白字符等价于[^\f\ \ \t\v]
\w 匹配包括下画线的任意单词字符,等价于[A-Za-z0-9_]
\W 匹配任意非单词字符,等价于[^A-Za-z0-9_]
* 表示任意个数的字符,包括0个
+ 表示至少一个字符
? 表示0个或1个字符
{n} 表示n个字符
{n,m}表示n~m个字符。
| 表示或,A|B用于匹配A或B
^ 表示行的开头^\d表示必须以数字开头
$ 表示行的结束,\d$表示必须以数字结束。
re.match(pattern, string, flags=0)
re.search(pattern, string, flags=0)
pattern 匹配的正则表达式
string 要匹配的字符串。
flags 标志位,用于控制正则表达式的匹配方式
re.I 使匹配对大小写不敏感
re.L 做本地化识别(locale-aware)匹配
re.M 多行匹配,影响 ^ 和 $
re.S 使 . 匹配包括换行在内的所有字符
re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
re.X 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。
group(num=0) 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
groups() 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。
line='hello , I am Chinese,I love China!'
print(re.match('hello', line).span()) # 在起始位置匹配
#(0, 5)
print(re.match('am', line)) # 不在起始位置匹配
#None
print(re.search(r'hello', line).span()) # 在起始位置匹配
#(0, 5)
print(re.search(r'am', line).span()) # 不在起始位置匹配
#(10, 12)
评论