匹配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 格式很容易出错。您应该改用 xmllxml 等库。而且 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 中标签的颜色

增加饼图matplotlib中标签的字体大小[重复]

如何获取此字符串中标签的 href 属性?

python 正则表达式 提取网页中标签的中文

如何在没有 API 的情况下获取 Instagram 中标签的所有图像?

我如何改变primefaces中标签的方向?