扫码关注官方订阅号
用python的beautifulsoup提取xml文件标签,想用正则表达式匹配两个条件,比如
111 123 222 123
现在想用正则表达式提取两个标签的内容,就是标签跟标签的内容都要取到,请问该如何写这个正则表达式呢
业精于勤,荒于嬉;行成于思,毁于随。
簡單的用:
soup(['a', 'b'])
就可以囉,如果沒有太複雜的條件,可以不用正規吧。
import re pat = re.compile(r'<(a|b)>(.*?)</\1>', re.M) for m in pat.finditer: print(m.group(2))
说明:
考虑到这里的<a>标签没有属性, 如果有, 可用r'<(a|b).*?>(.*?)</\1>'.
<a>
r'<(a|b).*?>(.*?)</\1>'
m.group(1)是指标签名, 即a或者b. m.group(2)则是标签内容.
m.group(1)
a
b
m.group(2)
.*?是惰性匹配.
.*?
.finditer是返回匹配的迭代器, 找它费了点时间.
.finditer
因为标签名不确定, 所以结束标签使用\1来反向引用标签名, 毕竟开始和结尾标签名要相同.
\1
pyquery
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
簡單的用:
就可以囉,如果沒有太複雜的條件,可以不用正規吧。
说明:
考虑到这里的
<a>标签没有属性, 如果有, 可用r'<(a|b).*?>(.*?)</\1>'.m.group(1)是指标签名, 即a或者b.m.group(2)则是标签内容..*?是惰性匹配..finditer是返回匹配的迭代器, 找它费了点时间.因为标签名不确定, 所以结束标签使用
\1来反向引用标签名, 毕竟开始和结尾标签名要相同.pyquery