【问题标题】:Match everything inside multiple instances of a tag in a string in python匹配python中字符串中标签的多个实例内的所有内容
【发布时间】:2014-10-24 19:39:24
【问题描述】:

示例字符串:

str = "<sec>John</sec> said hi to a woman (named <sec>Mary</sec>)"

结果应该是一个列表:

res = [John, Mary]

我现在应该真的学会了正则表达式。

【问题讨论】:

标签: python regex string


【解决方案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']

【讨论】:

  • 啊,没看到这个!这似乎也很有效!谢谢!
  • 它不仅有效,而且更抗故障且更灵活。
  • 我认得!我已更改接受的答案。
  • 我对你的问题投了赞成票以反对反对票,但下次请表现出你自己的一些努力。这通常在 StackOverflow 周围受到好评。
猜你喜欢
  • 1970-01-01
  • 2018-10-28
  • 1970-01-01
  • 2018-07-08
  • 2012-12-25
  • 2011-03-12
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
相关资源
最近更新 更多