剥离HTML,保留粗体/强标签

本文关键字:标签 HTML 保留 剥离 | 更新日期: 2023-09-27 18:06:21

我有一个小的正则表达式剥离所有的HTML,工作得很好。我现在需要做的是去掉所有的HTML,但保留<b><strong>标签。

任何帮助都将是非常感激的。

shortDesc = System.Text.RegularExpressions.Regex.Replace(shortDesc, @"<[^>]*>", String.Empty);

谢谢!

剥离HTML,保留粗体/强标签

  1. 停止使用正则表达式解析HTML
  2. 使用HTML Agility Pack

这是你的正则表达式的一个简单扩展,应该工作得很好:

Regex re = new Regex(@"<(?!/?(?:strong|b)'b)[^>]*>",
    RegexOptions.IgnoreCase);
text = re.Replace(text, "");

从我在您的评论中收集到的信息来看,如果您满足以下要求,则可以使用正则表达式的仔细使用(尽管通常出于明显的原因而避免使用):

  1. HTML没有格式错误。
  2. 不包含"<"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 "";
}