我有一個XML文件的結構是這樣的:正則表達式/ Python的:N - 比賽的出現先於其他比賽
<word id="15" pos="SS">
<token>infarto</token>
<lemmas>infarto</lemmas>
</word>
<word id="16" pos="AS">
<token>miocardico</token>
<lemmas>miocardico</lemmas>
</word>
<word id="17" pos="AS" annotated="head">
<token>acuto</token>
<lemmas>acuto</lemmas>
</word>
<word id="18" pos="E">
<token>in</token>
<lemmas>in</lemmas>
</word>
<word id="19" pos="SS">
<token>corso</token>
<lemmas>corso</lemmas>
</word>
我試圖做的,越來越爲「POS」和「令牌值「這個詞圍繞着一個單詞id 17(註釋=」頭「一個)。
這是所有沒有問題的匹配單詞後未來17
(pos=")(.+)(")(\s\S+?)("head")([\s\S]+?)(>)(\w+?)(<+)([\S\s]+?)(pos=")(.+)(")([\s\S]+?) (token>)(.+)(<)([\s\S]+?)
這讓我所有我想要的信息,如果我想擴大我可以再補充
(pos=")(.+)(")([\s\S]+?)(token>)(.+)(<)([\s\S]+?)
到結束。它不漂亮,但它的工作原理。
現在,當我去想去的地方到另一個方向,我絕對難倒
(pos=")(.+)(")([\s\S]+?)(token>)(.+)(<)([\s\S]+?)(pos=")(.+)(")(\s\S+?)("head")
相反匹配字16(第一個在「註釋頭」前)的唯一的信息,它匹配之前的所有信息(字15,字14,字13等)。
我錯過了什麼?
P.S. 使用XML解析器可悲的是不是一種選擇。
您應該使用XML庫來處理這種類型的任務,而不是正則表達式。 – armandino 2012-08-07 09:21:05
你不應該使用html或xml的正則表達式。 http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – 2012-08-07 09:22:17
http://stackoverflow.com/questions/6751105/why-its-not-possible- to-use-regex-to-parse-html-xml-a-formal-explanation-in-la – 2012-08-07 09:24:02