在xml字符串中查找模式

时间:2011-07-18 07:55:06

标签: python regex

我在xml文件中有以下xml标记,如下所示 '''

<pd:link scheme="http://www.w3.org/1999/xhtml" target="www.altruvest.org <pd:unicode ch="2014"/> or <pd:unicode ch="2014"/> www.Boardmatch.org">"www.altruvest.org <pd:unicode ch="2014"/> or <pd:unicode ch="2014"/> www.Boardmatch.org</pd:link>) '''

在上面的标签pd中:unicode标签位于target的文本值内。我想创建正则表达式模式来查找tag在python中的文本内的标记。

有人可以帮忙为此创建模式吗?

1 个答案:

答案 0 :(得分:2)

编辑回答:

>>> s = r'"<pd:link scheme="http://www.w3.org/1999/xhtml" target="www.altruvest.org <pd:unicode ch="2014"/> or <pd:unicode ch="2014"/> www.Boardmatch.org">www.altruvest.org <pd:unicode ch="2014"/> or <pd:unicode ch="2014"/> www.Boardmatch.org</pd:link>"'
>>> import re
>>> r = re.search(r'=".*?(<pd:unicode ch="\d+"/>).*?"', s, re.DOTALL)
>>> r.groups()
('<pd:unicode ch="2014"/>',)

以上功能是匹配pd:unicode代码,前面有="后跟"re.DOTALL忽略换行符(将它们视为普通字符)。

请记住,您要求做的是解析 XML,您应该使用xmlparser(请参阅示例xml.etree或更一般的讨论{{3} }),而不是正则表达式。通过正则表达式准确地解析XML实际上是here,因此上述正则表达式可能会产生误报或错过一些真正的正面。

如果您不想使用完整的XML解析器,可以考虑使用not possible之类的内容。

相关问题