我在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中的文本内的标记。
有人可以帮忙为此创建模式吗?
答案 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之类的内容。