正则表达式删除HTML标签

我正在使用以下常规表达式从字符串中删除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>标签的第一次出现。

回答:

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

/ XML解析器为您完成此操作。

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

  • http://blogs.msdn.com/b/jaredpar/archive/2008/10/15/regular-expression-limitations.aspx

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

var pattern = @"<(img|a)[^>]*>(?<content>[^<]*)<";

var regex = new Regex(pattern);

var m = regex.Match(sSummary);

if ( m.Success ) {

sResult = m.Groups["content"].Value;

以上是 正则表达式删除HTML标签 的全部内容, 来源链接: utcz.com/qa/432273.html

回到顶部