我想替换一些像 <. /> (. 是 b, h1, ... 但不是 br, hr, ...)
我想: Regex.Replace(myString, "<..?/>", "") 但我不知道如何排除 br 和 hr。
任何人都可以帮助我吗?
谢谢!
如果您知道要执行哪些标记,则可以这样做:
Regex.Replace(myString, "<(b|p|div|span) />", "")
在括号内,所有选项都以竖线分隔。
尝试这样的事情:
(?:< *)(?!(?:br|hr)) *\w+ *\/ *\>
将您不想匹配的任何标签添加到 br|hr 部分(使用 '|' 分隔它们)。
使用这样的模式来匹配和替换它们:
<(TAG1|TAG2|TAG3|...)\s*/?>
(TAG1|TAG2|TAG3|...)
您要处理的所有标签在哪里,用管道分隔。确保还指定正则表达式不区分大小写,因为 HTML 标记不区分大小写。例如,要只识别您列出的两个,您可以创建一个像这样的正则表达式:
var exp = new Regex("<(b|h1)\s*/?>", RegexOptions.IgnoreCase);
这个怎么运作:
\s*
识别零个或多个空白字符。(在正则表达式的开头不需要其中一个,因为 html 标准不允许标签名称前有空格。)/?
可选地匹配一个'/'。(这只是为了灵活处理不使用/
in 空标签的 HTML,因为 HTML 规范并不总是需要它。)您可以使用它来删除标签,如下所示:
var strippedText = exp.Replace(input, String.Empty);