剥离HTML,保留粗体/强标签
本文关键字:标签 HTML 保留 剥离 | 更新日期: 2023-09-27 18:06:21
我有一个小的正则表达式剥离所有的HTML,工作得很好。我现在需要做的是去掉所有的HTML,但保留<b>
和<strong>
标签。
任何帮助都将是非常感激的。
shortDesc = System.Text.RegularExpressions.Regex.Replace(shortDesc, @"<[^>]*>", String.Empty);
谢谢!
- 停止使用正则表达式解析HTML
- 使用HTML Agility Pack
这是你的正则表达式的一个简单扩展,应该工作得很好:
Regex re = new Regex(@"<(?!/?(?:strong|b)'b)[^>]*>",
RegexOptions.IgnoreCase);
text = re.Replace(text, "");
从我在您的评论中收集到的信息来看,如果您满足以下要求,则可以使用正则表达式的仔细使用(尽管通常出于明显的原因而避免使用):
- HTML没有格式错误。
- 不包含"<"answers">"作为*的一部分,除了开始/结束标记*。
如果html页面在您的控制之下,那么假设您可以满足这两个条件是相当合理的,否则我不会麻烦的。
在您的例子中,可以使用Replace方法的重载实例,该方法接受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 "";
}