我正在使用以下常规表达式从字符串中删除html标签。它有效,除了我留下了结束标签。如果我尝试删除:<a href="blah">blah</a>它将离开<a/>。
<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>标签的第一次出现。
<a>
<img>
使用正则表达式解析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;