我想替换一些html空标记,如<。 /> (。是b,h1,......但不是br,hr,......)
我想:Regex.Replace(myString,“< ..?/>”,“”)但我不知道如何排除br和hr。
任何人都可以帮助我?
THX!
答案 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);