我有一小部分正则表达式可以删除所有HTML,效果很好。我现在需要做的是删除所有HTML,但保留<b>
和<strong>
标记。
非常感谢任何帮助。
shortDesc = System.Text.RegularExpressions.Regex.Replace(shortDesc, @"<[^>]*>", String.Empty);
谢谢!
答案 0 :(得分:4)
答案 1 :(得分:2)
以下是正则表达式的简单扩展,应该可以很好地运行:
Regex re = new Regex(@"<(?!/?(?:strong|b)\b)[^>]*>",
RegexOptions.IgnoreCase);
text = re.Replace(text, "");
答案 2 :(得分:0)
根据我在你的评论中收集的内容,如果您满足以下要求,可以使用正则表达式(虽然通常因为显而易见的原因而被避开):
如果html页面在你的控制之下,假设你可以满足这两个条件是合理的,否则我不会打扰。
在您的情况下,您可以使用替换方法的重载实例,该方法接受 MatchEvaluator 委托及其他参数。
用法示例:
MatchEvaluator replaceCallback = new MatchEvaluator(MatchHandler);
Regex RE = new Regex(matchPattern, RegexOptions.Multiline);
string newString = RE.Replace(source, replaceCallback);
MatchHandler示例:
public static string MatchHandler(Match theMatch) {
if (theMatch.Value.StartsWith("<b>") || ...) {
return theMatch.Value; //return as is
}
//else return empty string
return "";
}