我需要使用正则表达式删除标签“image”。
我正在使用C#.Net
示例<rrr><image from="91524" to="92505" /></rrr>
应该成为:
<rrr></rrr>
任何???
答案 0 :(得分: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 />
开头的其他标记。<image />
和<image></image>
。其中一些很容易修复,有些更棘手。但最终,当LINQ to XML解决方案如此简单并为您完成所有这些时,不值得花时间改进正则表达式解决方案来处理所有特殊情况。
答案 1 :(得分:0)
即使XML非常规律并且受到严厉的“验证或死亡”政策的影响,this Stack Overflow question也会非常有启发性。
正则表达式很强大 - 但.NET中的XML工具更适合这项任务,因为它们旨在处理这类事情。您可以根据其结构操作XML ,这是正则表达式无法做到的,因为他们将XML视为文本。
XML是文本,但它是具有特定结构的文本。利用已知的质量。
答案 2 :(得分:-1)
试试这个:
<image[^>]*>