2010-02-18 147 views
0

我需要用正則表達式去除標籤「image」。用正則表達式去掉xml標籤

我與C#.NET的

例如<rrr><image from="91524" to="92505" /></rrr>應該變成:

<rrr></rrr> 

任何???

+0

爲什麼你需要使用正則表達式? – Skilldrick 2010-02-18 16:35:46

回答

8

你真不該使用正則表達式完成這個任務,尤其是當.NET提供如此強大的工具來處理XML:

XElement xml = XElement.Parse("<rrr><image from=\"91524\" to=\"92505\" /></rrr>"); 
xml.Descendants("image").Remove(); 

但是如果你堅持使用正則表達式這樣做,讓我們看看會發生什麼:

string xml = "<rrr><image from=\"91524\" to=\"92505\" /></rrr>"; 
string output = Regex.Replace(xml, "<image.*?>", ""); 

這種方法有一些問題,但第一種方法解決了你。實施例問題:

  • 不處理的情況下的靈敏度。
  • >屬性中的字符可能會混淆正則表達式。
  • 換行符將不會正確匹配。
  • 錯誤匹配以類似<image2 />圖像啓動其他標籤。
  • XML註釋可能會導致問題。
  • 不同時處理<image /><image></image>
  • 等...

其中有些是容易解決的,有些更棘手。但最終,當LINQ to XML解決方案如此簡單併爲您完成所有這些工作時,花費時間改進正則表達式解決方案來處理所有特殊情況並不值得。

0

即使XML是非常正常和患有惡法「驗證或死亡」的政策,this Stack Overflow question將被證明很受啓發。

正則表達式是強大的 - 但在.NET中的XML工具對完成這一任務更好,因爲它們被設計來處理這樣的事情。您可以根據其結構操縱XML ,這是Regexes無法執行的操作,因爲他們將XML視爲文本。

XML是文字,但它是文本與特定的結構。利用已知的質量。