正则表达式中还可以对匹配的内容进行分组匹配,如下:
01:普通分组匹配。
代码示例1:
import re
c = re.compile(r'(\d+)([a-z]+)(\d+)')
s = c.search('sdsdj235sadhasjd36432sjdha')
# 完整匹配结果
print(s.group(), s.span())
# 等价于上式
print(s.group(0), s.span(0))
# 第几个()匹配的结果
print(s.group(1), s.span(1))
print(s.group(2), s.span(2))
print(s.group(3), s.span(3))
运行结果:
02:标签等分组匹配。
代码示例2:
import re
# 固定匹配
# c = re.compile(r'<a>\w+</a>')
# \1表示前面第一个()匹配的内容
# c = re.compile(r'<([a-z]+)><([a-z]+)>\w+</\2></\1>')
# 给分组()起名字
c = re.compile(r'<(?P<goudan>[a-z]+)><(?P<dahua>[a-z]+)>\w+</(?P=dahua)></(?P=goudan)>')
s = c.search('<div><a>百度一下</a></div>')
if s:
print(s.group())
运行结果: