这对我来说很好:
string myString = "<h2>content needs removing</h2> other content...";
Console.WriteLine(myString);
myString = Regex.Replace(myString, "<h[0-9]>.*</h[0-9]>", string.Empty);
Console.WriteLine(myString);
显示:
<h2>content needs removing</h2> other content...
other content...
正如预期的那样。
如果你的问题是你的真实案例有几个不同的标题标签,那么你有一个贪婪的 * 量词的问题。它将创建最长的匹配。例如,如果您有:
<h2>content needs removing</h2> other content...<h3>some more headings</h3> and some other stuff
您将匹配从<h2>
to 的所有内容</h3>
并替换它。要解决此问题,您需要使用惰性量词:
myString = Regex.Replace(myString, "<h[0-9]>.*?</h[0-9]>", string.Empty);
会给你留下:
other content... and some other stuff
但是请注意,这不会修复嵌套<h>
标签。正如@fardjad 所说,对 HTML 使用 Regex 通常不是一个好主意。