目录
4.正则分组
当使用分组时,除了可以获得整个匹配,还能够获得选择每一个单独组,使用 () 进行分组
4.1捕获分组
分组之后匹配到的数据会放在内存里,并且给定一个从1开始的索引
# 默认参数0 表示输出匹配的整个字符串
# 默认参数n(n>0) 表示输出第n个分组字符串
#如果有捕获分组,使用findall只会匹配捕获分组内容,re.findall()返回的使用列表,所以不需要也不能使用ret.group()来获取内容,
4.2非捕获分组(?:规则)
只分组不捕获,不放在内存里
#非捕获分组不放在内存中,所以元组为空
4.3分组向后引用
4.4命名分组(?P<name>规则)
#使用字典来获取命名和内容
5.正则标记
5.1第三个参数
5.1.1 re.I使大小写不敏感![](https://i-blog.csdnimg.cn/blog_migrate/3a6f770f5a1937c2080d08cf8b70665c.png)
5.1.2re.M 多行匹配,影响^和$
#可以yong使用|来添加多个参数
5.1.3re.S匹配包括换行符在内的所有字符
5.2内联标记
推荐使用内联标记
6.正则断言
#它们只匹配某些位置,在匹配过程中,不占用字符,所以被称为“零宽”。
6.1零宽正向先行断言:(?=pattern)
#表示这个位置之后能够匹配patten的子串,满足表达式的内容
#第一个print表示匹配re,但后面必须紧跟着gular,regular满足,所以输出re,断言内的gular不会输出。第二个print表示匹配的是re,但后面必须紧跟着gularr,s字符串没有满足的,所以无输出。
6.2零宽负向先行断言(?!pattern)
#代表一个位置,之后不能能够匹配patten的序列,满足表达式的内容
#第一个print表示匹配的是re,但紧跟着的不能是gular,ression满足,所以输出re。第二个print表示匹配的是re,但紧跟着的不能是gularr,regular和repssion满足,所以输出两个re
6.3零宽正向后行断言(?<=pattern)
代表字符串中的一个位置,该位置之前的字符序列能够匹配pattern
#第一个print表示匹配的gular但前面必须是re,regular中就有这个位置,所以会输出gular,断言内的内容不会输出。第二个print表示匹配的是gular,但前面必须是rre,s字符串没有,所以不会有输出。
6.4零宽负向后行断言(?<!pattern)
代表字符串中的一个位置,该位置之前的字符序列不能够匹配pattern
第一个print表示匹配的是gular,但左边不能是re,rbgular满足所以输出gular,断言内的内容不会输出。第二个print表示匹配的gular,但左边不能是ree,regular和rbgular都满足,所以会输出两个gular。