import re
m = re.search(r'm,'sdafhiwmkom')# 匹配到的结果字符串的开始和结束下标print(m.span())# 使用group方法可以获取匹配的字符串结果# group 可以传参,表示第 n 个分组print(m.group())# mprint(m.group(0))# mprint(m.group(1))# IndexError:no such group# group方法表示正则表达式的分组# 1. 在正则表达式里使用()表示一个分组# 2. 如果没有分组,默认只有一组# 3. 分组的下标从0开始# 正则表达式有 四个 分组
m1 = re.search(r'(9.*)(0.*)(5.*7)','da9fi0riel5kfda7ifsdaiferit')# 分组0:就是把整个正则表达式当做一个整体# m1.group() 默认就是拿分组0的内容# 分组1:就是第一个()的正则匹配的内容# ...# 将各分组(除分组0)的内容组合成一个元组返回print(m1.groups())# groupdict 作用是获取到分组组成的字典print(m1.groupdict())# {}# (?P<name>表达式) 可以给分组起一个名字
m2 = re.search(r'(9.*)(?P<xxx>0.*)(5.*7)','da9fi0riel5kfda7ifsdaiferit')print(m2.groupdict())# {'xxx':'0riel'}# 可以通过分组名或分组的下标获取到分组里匹配到的字符串print(m2.group('xxx'))# 0rielprint(m2.group(2))# 0riel
四、re.compile 方法的使用
# compile 编译# 在re模块里,可以使用 re.方法调用函数,还可以调用 re.compile 得到一个对象import re
# 可以直接调用 re.search 方法
m = re.search(r'm.*a','o3rjomjadas')print(m)
r = re.compile(r'm.*a')
x = r.search('o3rjomjadas')print(x)
五、正则修饰符
import re
# 正则修饰符是对正则表达式进行修饰的# re.S:让 . 匹配换行# re.I:忽略大小写# re.M:让 $ 能匹配上换行# . 表示除了换行以外的任意字符
x = re.search(r'm.*a','sdfmo\nejoasdl', re.S)print(x)
y = re.search(r'x','good Xyz', re.I)print(y)# \w:表示的是字母数组和_ +:出现一次以上 $:以指定的内容结尾
z = re.findall(r.'\w+$','i am boy\n you are girl\n he is man')# ['boy', 'girl', 'man']