2011-07-18 41 views
-2

模式我在我的xml文件以下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的标签是目标的内部文本值。我想创建正则表达式模式来查找标签在python中的文本内的标签。

谁能请帮助这个创建模式?

+1

不清楚你的标签是什么样子。请提供更全面的输入示例,并尝试准确描述您要查找的标签。如果你不知道正则表达式的语言,试图描述它的英文,如:“用方括号包围的单词‘猪’或单词‘狗’,在一行的末尾”。 –

+2

没有人能理解你的问题,因为你没有格式化你的代码,因此你放置的标签是不可见的。请阅读本网站的常见问题并学习使用markdown(SO的格式化语法)。它需要一分钟左右! – mac

回答

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或更广泛的讨论here),而不是正则表达式。通过正则表达式的平均准确地解析XML实际上是not possible,因此上述正则表达式是可能产生误报或错过一些真实的。

如果你不想去一个完整的XML解析器,你可以考虑像pyparsing代替。

+0

不,我想找到''标签,如果是文本,如'内”>'在上面的例子中为 pd:unicode标签在文本值内。 – Yogesh

+0

@Yogesh - 见编辑答案! – mac

+0

@Yogesh - 没有回复您。编辑过的答案是否回答了您的问题?如果不是,请提供反馈意见,如果是,请标记为accacent! :○ – mac