1、(?P<name>规则),分组捕获,组名是name;组外面再加一个*,表示循环捕获,只捕获最后一次匹配(?P<name>)*;如想获取所有捕获,可以在循环捕获组外层加一个括号以获取所有结果((?P<name>)*),对循环捕获目前还没有在python上试验成功
示例如:
a: pattern=r'(?i)aa(?P<group1>\d\w)' str='aabb aa1c Aadd Aa2d'
b:(?i):忽略大小写,相当于re.I
c、取正则表达式中的分组值:(?P=组名),如: pattern=r'(?i)aa(?P<group1>\d\w) (?P=group1)',引用前面组值
d、在其它正则表达式中引用前面的分组值 :,如:p='bb(?P<group1>\d\w)' ,re.sub(pattern,r’ab\g<group1>,str) ,使用\g可以引用不同表达式的组值。
e、findall() 、search()等部分函数不能识别(P<group1>)和(?P=goup1)这种引用方式。
2、正则表达式的() [] {}有不同的意思。
() 分组捕获,是为了提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串。
(\s*)表示连续空格的字符串。
[]是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文