匹配python中字符串中标签的多个实例内的所有内容
Posted
技术标签:
【中文标题】匹配python中字符串中标签的多个实例内的所有内容【英文标题】:Match everything inside multiple instances of a tag in a string in python 【发布时间】:2014-10-24 19:39:24 【问题描述】:示例字符串:
str = "<sec>John</sec> said hi to a woman (named <sec>Mary</sec>)"
结果应该是一个列表:
res = [John, Mary]
我现在应该真的学会了正则表达式。
【问题讨论】:
***.com/questions/7361253/… 或者你真的应该学会 google ;) 注意到了! :) 谢谢! -1 表示未显示尝试 【参考方案1】:试试这个:
import re
str = "<sec>John</sec> said hi to a woman (named <sec>Mary</sec>)"
ext = re.findall(r'<sec>(\S+?)</sec>', str)
这将返回['John', 'Mary']
\S
- 表示匹配任何非空白字符。
+?
- 表示重复一个字符一次或多次(非贪婪)。
()
- 表示提取这些括号内的所有内容。
【讨论】:
请注意,用re
解析xml
格式很容易出错。您应该改用 xml
或 lxml
等库。而且 OP 不太可能只搜索 4 个字母的字符串。【参考方案2】:
您正在处理(类似于)XML。使用a parser。
import xml.etree.ElementTree as ET
str = "<sec>John</sec> said hi to a woman (named <sec>Mary</sec>)"
doc = ET.fromstring("<root>" + str + "</root>")
result = [x.text for x in doc.findall(".//sec")]
# >>> ['John', 'Mary']
【讨论】:
啊,没看到这个!这似乎也很有效!谢谢! 它不仅有效,而且更抗故障且更灵活。 我认得!我已更改接受的答案。 我对你的问题投了赞成票以反对反对票,但下次请表现出你自己的一些努力。这通常在 *** 周围受到好评。以上是关于匹配python中字符串中标签的多个实例内的所有内容的主要内容,如果未能解决你的问题,请参考以下文章
选择 UIViewController 类的按钮时如何更新 UICollectionViewCell 中标签的颜色