2010-10-04 38 views
2

問候, 我已閱讀了關於此主題的一些主題,但實際上我無法找到或想到適當的解決方案(請參閱例如:Regular expression to remove XML tags and their content)。通過正則表達式去除XML標籤

我有一個XML標籤這樣的:

<bla_tag size="100" 
     diameter="50" 
     ratio="0.2" 
     path="/user/home/something.pdf"> 
</bla_tag> 

目的:有一個正則表達式,可以去除<bla_tag ...>之間的一切。

問題:大小等值在每個bla_tags(文件中大約有1000個bla-tags)中發生變化。

失敗的嘗試:我嘗試了:<bla_tag .*?>(?使它不那麼貪婪......)。 失敗的結果:只有<bla_tag已被標記,但不是整個括號內的內容!

我在做什麼錯 - 或者是否真的有可能基於正則表達式來解決這個問題(我在某處讀到由於xml屬性是類型2語言而不可能的,你能證實嗎?)

+3

請參閱http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – RichieHindle 2010-10-04 13:06:19

+0

關於您將使用哪種特定的編程/腳本語言? – Ruel 2010-10-04 13:06:58

+0

你的正則表達式看起來沒問題。你如何使用它? – Jens 2010-10-04 14:24:50

回答

5

你想讀RegEx match open tags except XHTML self-contained tags

重視。

使用xml解析器。 (老實說,他們並不難用)。它們通常有兩種風格 - SAX和DOM,你可能會更喜歡SAX。

我最喜歡的解析器是expat,但它們都有它們的微妙之處,所以它並不總是一成不變的。

+0

非常感謝,並對遲到的迴應表示歉意。特別是提到的鏈接中包含的Automata/Regex部分幫助了我。由於我現在有理論上的計算機科學課程,我也可以理解爲什麼XML解析器更可取。 – Daniyal 2010-11-13 22:03:06