2011-07-18 39 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