【发布时间】:2010-02-18 16:29:12
【问题描述】:
我需要用正则表达式删除标签“图像”。
我正在使用 C# .Net
示例<rrr><image from="91524" to="92505" /></rrr> 应变为:
<rrr></rrr>
有人吗???
【问题讨论】:
-
为什么需要使用正则表达式?
我需要用正则表达式删除标签“图像”。
我正在使用 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.*?>", "");
虽然第一种方法可以解决您的问题,但这种方法存在一些问题。示例问题:
> 属性中的字符可能会混淆正则表达式。<image2 />。<image /> 和<image></image>。其中一些很容易修复,有些则比较棘手。但最终,当 LINQ to XML 解决方案如此简单并为您完成所有这些时,花时间改进正则表达式解决方案以处理所有特殊情况是不值得的。
【讨论】:
尽管 XML 非常有规律并且受到严厉的“验证或死亡”政策的影响,this Stack Overflow question 将证明是非常有启发性的。
正则表达式功能强大——但 .NET 中的 XML 工具更适合此任务,因为它们旨在处理此类事情。您可以根据其结构操作 XML,这是正则表达式无法做到的,因为它们将您的 XML 视为文本。
XML 是文本,但它是具有特定结构的文本。充分利用这种众所周知的品质。
【讨论】:
试试这个:
<image[^>]*>
【讨论】: