一.python正则分组
1.1 无命名分组
在正则分组中,隐藏的全局分组的索引号为0,即整个正则表达式的匹配结果,然后从左到右,第一个括号表示第一组,第二个表示第二组,依此类推
1.2 有命名分组
命名分组就是给需要用正则匹配的内容组重新取一个名字,语法格式为:(?P<name>regex),其中那么表示匹配到的分组别名
import re
the_str = "the target ip='192.168.0.1',version='1.0.0' "
group_res = re.search(r"ip='(?P<ip>\d+\.\d+\.\d+\.\d+).*", the_str)
print(group_res.group('ip')) # 通过命名分组引用分组
打印结果:
>>>192.168.0.1
*(?P=name)通过命名分组名进行引用
(?P=name) 字符P必须是大写的P,name表示命名分组的分组名
(?P<name>)(?P=name) 引用分组的值匹配值必须与第一个分组匹配值相等才能匹配到
引用前一个分组,前后值相同都是2,故能匹配到
>>> re.match(r'(?P<tag>\d)(?P=tag)','66').groups()
('6',)
>>> re.match(r'(?P<tag>\d)(?P=tag)','66').group