知道为什么我的正则表达式不正常吗?

时间:2014-02-19 21:01:44

标签: c# regex

我正试图获得所有

<br> </br> <br/> and <br />  <p> and </p> 

在我的代码中 但我现在的正则表达式正在

<b> 
/* and */ 
</b> 

我也希望他们被排除在外。我该怎么做呢?

 private static string StripTagsRegex(string source)
 {
    return Regex.Replace(source, "<.?br?/?>|<.?p?/?>", string.Empty);
 } 

2 个答案:

答案 0 :(得分:2)

?br之后删除p,并将.?更改为`/?

return Regex.Replace(source, @"</?br/?>|</?p/?>", string.Empty);

这样做的结果是它还会删除某些无效标签,例如</p/>,如果这是一个大问题,你可以只有4个而不是2个。

http://rubular.com/r/CqkUQKCCuR

答案 1 :(得分:0)

根据罗宾的建议重新发表评论:

正如其他人提到的,你应该使用HTML解析器进行HTML解析,但是如果你想用正则表达式解析html,你应该非常小心,不要匹配非直接性质的右括号。所以相反它应该是(我没有检查,所以可能是不正确的) </?(?:br|p)(\s|/)[^>]*>点不要使用.跳过字符,因为您可以跳过关闭>。而是搜索>以外的任何内容,即[^>]