# re.Match类的使用
# 导入模块
import re
# 调用re.match,re.search方法或者对re.finditer结果进行遍历,输出的结果都是re.Match对象
a = re.search(r'c', 'schjcfgucjkhkckkcuu')
print(a)
# dir可查看类属性方法
# print(dir(a))
# pos与endpos返回的是在哪一个范围内查找的下标
print(a.pos,a.endpos)
# . 任意字符, * 出现任意次数
b = re.search(r'c.*j', 'schjcfgucjkhkckkcuu')
# span 输出匹配到的结果字符串的开始和结束下标
print(b.span())
# group 获取匹配的字符串结果
print(b.group())
# group可以传参,表示第某个分组,默认从第0组开始,0可不写
print(b.group(0))
# 查找的字符串未分组的情况下,默认只有一个组
# 超出会报错
# print(b.group(1))
# group 方法表示正则表达式的分组
# 1. 在正则表达式里使用小括号()表示一个分组
# 2. 如果没有分组,默认只有一组
# 3. 分组的下标从0开始
c = re.search(r'6.*2.*8.*7', 'ads6dfsdf2dsf8dsf7asd')
print(c)
# 添加括号进行分组
# 下方正则表达式有 四个分组
c1 = re.search(r'(6.*)(2.*)(8.*7)', 'ads6dfsdf2dsf8dsf7asd')
print(c1)
# group默认拿第0组
print(c1.group())
# 第0组也就是把整个正则表达式当作一个整体
print(c1.group(0))
# 第1组
print(c1.group(1))
# 第2组
print(c1.group(2))
# 第3组
print(c1.group(3))
# groups方法将分组变为一个元组输出
print(c1.groups())
# groupdict 方法将获取到的分组组成字典
print(c1.groupdict())
# (?P表达式) 可以给分组起一个名字
c2 = re.search(r'(6.*)(?P2.*)(8.*7)', 'ads6dfsdf2dsf8dsf7asd')
print(c2.groupdict())
# 通过名称获取组
print(c2.groupdict('zzz'))
# 正则可以通过分组名或者分组的下标获取到分组里匹配到的字符串
print(c2.group('zzz'))
print(c2.group(2))
# 分组的情况下,span默认匹配的是第0组的下标
print(c2.span())
# 可以指定第几组,来获取指定组的下标
print(c2.span(2))
# re.compile方法
# 在re模块中,可以使用re.xxx方法调用函数,还可以调用re.compile方法得到一个对象,通过对象调用方法
# 直接调用re.search方法
d = re.search(r'a.*v','adfsdfvdff')
print(d)
# re.compile返回对象,通过对象调用
# 场景,当需要匹配多个字符串的时候,不用一直写正则表达式
e = re.compile(r'a.*v')
e1 = e.search('adfsdfvdff')
e2 = e.search('dfsalkjjoilv')
print(e1)
print(e2)
![90b2d464488c5c91104531dc317fcf2e.png](https://i-blog.csdnimg.cn/blog_migrate/9b5b60215d5cd22d4bc3b6944fc886d7.jpeg)
||如有侵权,请联系删除,谢谢!||