1

我想替换一些像 <. /> (. 是 b, h1, ... 但不是 br, hr, ...)

我想: Regex.Replace(myString, "<..?/>", "") 但我不知道如何排除 br 和 hr。

任何人都可以帮助我吗?

谢谢!

4

3 回答 3

3

如果您知道要执行哪些标记,则可以这样做:

Regex.Replace(myString, "<(b|p|div|span) />", "") 

在括号内,所有选项都以竖线分隔。

于 2012-08-10T14:26:05.543 回答
3

尝试这样的事情:

(?:< *)(?!(?:br|hr)) *\w+ *\/ *\>

将您不想匹配的任何标签添加到 br|hr 部分(使用 '|' 分隔它们)。

于 2012-08-10T14:34:08.623 回答
1

使用这样的模式来匹配和替换它们:

<(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);
于 2012-08-10T14:28:34.277 回答