簡體   English   中英

用正則表達式刪除xml標簽

[英]removing xml tag with regex

我需要使用正則表達式刪除標簽“ image”。

我正在使用C#.Net

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

<rrr></rrr>

任何人???

您實際上不應該使用正則表達式來完成此任務,尤其是當.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.*?>", "");

盡管第一種方法可以解決您的問題,但該方法仍存在一些問題。 問題示例:

  • 不區分大小寫。
  • >屬性中的字符會混淆正則表達式。
  • 換行符將無法正確匹配。
  • 與其他以image開頭的標簽(例如<image2 />不正確匹配。
  • XML注釋可能會導致問題。
  • 不能同時處理<image /><image></image>
  • 等等...

其中有些很容易修復,有些則比較棘手。 但是最后,當LINQ to XML解決方案非常簡單並為您完成所有這些工作時,花時間改進正則表達式解決方案來處理所有特殊情況是不值得的。

即使XML是非常常規的,並且受到嚴酷的“驗證或死亡”策略的困擾,但這個Stack Overflow問題仍將非常有啟發性。

正則表達式功能強大-但.NET中的XML工具更適合此任務,因為它們旨在處理此類事情。 您可以根據XML 的結構來操作XML,這是Regexes無法執行的,因為它們將XML視為文本。

XML是文本,但是它是具有特定結構的文本。 利用這種已知的質量。

嘗試這個:

<image[^>]*>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM