2010-02-18 149 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是文字,但它是文本与特定的结构。利用已知的质量。