【问题标题】:Regex xml string and print groups [duplicate]正则表达式 xml 字符串和打印组 [重复]
【发布时间】:2019-09-25 13:49:38
【问题描述】:

我一直在尝试使用正则表达式来解析 XML 样式的字符串,如下所示:

输入
"Joe Doe got a <span class="procedure">X ray</span> <- in April blah blah <span <- class="disease">lacerations</span> blah <span <- class="anatomy">kidney</span>."

对于每个跨度,我想匹配三个组:
"<span class="blah">blah</span>" , class, textual content

例如:
<span class="procedure">X ray</span>
匹配项是:
<span class="procedure">X ray</span>, procedure, X ray

到目前为止,我已经能够使用re.search('<.+?>', xml) 找到<span class="procedure">

尽管使用了re.search('<.+?>+, xml),但我没有找到其他字符串,而是给出了<span class="procedure">X ray</span> <- in April>,这也不是想要的结果。

【问题讨论】:

  • 在发布这个问题之前,我确实对这个主题进行了很好的研究,并且我很清楚可以更轻松地执行所需任务的众多工具。然而,我被要求使用正则表达式执行此任务,由于正则表达式和 XML/HTML 的限制,这显然是一个挑战。
  • 干杯,很高兴有人能够在主题作为副本关闭之前提供答案。对于未来的建议:如果你列出你所做的研究,并解释“是的,我知道我通常不应该这样做,但我需要作为测试/家庭作业/等的一部分。”它将不太可能因任何原因关闭!
  • 啊,我明白了,谢谢你的信息!下次一定要申请!

标签: python regex xml


【解决方案1】:

Regex 不是处理像 XML 这样的嵌套类型的最佳选择。但如果您的问题真的那么简单,re.findall(r'<span.+?<\/span>', yourstring) 会返回您想要的结果。

【讨论】:

  • 感谢您的帮助,这给了我 ['', '', ''] 所以我尝试了re.findall(r'<span.+?<\span>', mystring),但返回的是一个空列表。
  • 抱歉,没有意识到你想要整件事。我会更新答案。
  • re.findall(r'<span.+?<\/span>', mystring) 也产生了一个空字符串,我错过了什么吗?
  • 你一定是,它对我来说非常有效。你传入的字符串是否正确?
  • 是的,这行得通。对我来说这是一个环境问题。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多