小编典典

正则表达式删除HTML标签

c#

我正在使用以下常规表达式从字符串中删除html标签。它有效,除了我留下了结束标签。如果我尝试删除:<a href="blah">blah</a>它将离开<a/>

我根本不了解正则表达式语法,并且对此一无所知。可以让拥有RegEx知识的人给我提供一个可行的模式。

这是我的代码:

  string sPattern = @"<\/?!?(img|a)[^>]*>";
  Regex rgx = new Regex(sPattern);
  Match m = rgx.Match(sSummary);
  string sResult = "";
  if (m.Success)
   sResult = rgx.Replace(sSummary, "", 1);

我希望删除<a>and <img>标签的第一次出现。


阅读 1036

收藏
2020-05-19

共1个答案

小编典典

使用正则表达式解析HTML充满陷阱。HTML不是一种常规语言,因此无法使用正则表达式进行100%正确的解析。这只是您将遇到的许多问题之一。最好的方法是使用HTML
/ XML解析器为您完成此操作。

这是我不久前写的博客文章的链接,其中包含有关此问题的更多详细信息。

话虽如此,这是一种应解决此特定问题的解决方案。但这绝不是一个完美的解决方案。

var pattern = @"<(img|a)[^>]*>(?<content>[^<]*)<";
var regex = new Regex(pattern);
var m = regex.Match(sSummary);
if ( m.Success ) { 
  sResult = m.Groups["content"].Value;
2020-05-19