六、正则表达式:分组取值(括号的分组作用和反斜杠1的取值作用)

六、正则表达式:分组取值(括号的分组作用和反斜杠1的取值作用)

主要用在匹配带有html标签的文本

限制输入标签的格式(前后必须一致)
使用()和\1,\2取分组的值

# 错误示范,以下当html_str = "<h1>hahaha</h2>"的时候,结果一样会输出
# 没有达到前后一致的限制
import re

html_str = "<h1>hahaha</h1>"
ret = re.match(r"<\w*>.*</\w*>", html_str)
print(ret.group())
# 正确示范,()有分组作用,正则表达式中\1可以取到分组的第一个
import re

html_str = "<h1>hahaha</h1>"
ret = re.match(r"<(\w*)>.*</\1>", html_str)
print(ret.group())
# 正确示范,()有分组作用,正则表达式中\1和\2取值顺序
import re

html_str = "<body><h1>hahaha</h1></body>"
ret = re.match(r"<(\w*)><(\w*)>.*</\2></\1>", html_str)
print(ret.group())

当分组太多时,可以先给分组命名,取值的时候直接按照名字来取:

(?P<name>) 		#命名的格式 (注意P是大写的)
(?P=name)  		#取值的格式
import re

html_str = "<body><h1>hahaha</h1></body>"
ret = re.match(r"<(?P<p1>\w*)><(?P<p2>\w*)>.*</(?P=p2)></(?P=p1)>", html_str)
print(ret.group())
发布了47 篇原创文章 · 获赞 74 · 访问量 7902

猜你喜欢

转载自blog.csdn.net/Jacky_kplin/article/details/104744999