正则表达式 - 替换一些html标签

时间:2012-08-10 14:15:44

标签: c# regex

我想替换一些html空标记,如<。 /> (。是b,h1,......但不是br,hr,......)

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

任何人都可以帮助我?

THX!

3 个答案:

答案 0 :(得分:3)

如果你知道你想做哪些标签,你可以这样做:

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

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

答案 1 :(得分:3)

尝试这样的事情:

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

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

答案 2 :(得分:1)

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

<(TAG1|TAG2|TAG3|...)\s*/?>

其中(TAG1|TAG2|TAG3|...)是您要处理的所有标记,由管道分隔。请务必同时指定正则表达式不区分大小写,因为HTML标记不区分大小写。例如,要识别您列出的两个,您可以创建一个这样的正则表达式:

var exp = new Regex("<(b|h1)\s*/?>", RegexOptions.IgnoreCase);

工作原理:

  • 括号中的位只标识它应该处理的标记。
  • \s*识别零个或多个空格字符。 (在正则表达式的开头不需要其中一个,因为html标准在标记名称之前不允许使用空格。)
  • /?可选地匹配'/'。 (这只是为了灵活处理在空标签中不使用/的HTML,因为HTML规范并不总是需要它。)

您可以使用它删除标签,如下所示:

var strippedText = exp.Replace(input, String.Empty);