Vb.net正则表达式 - 从字符串中删除html标签

时间:2013-09-25 11:09:31

标签: asp.net regex vb.net code-behind

 <br style="color: #252525">testing 1</br>
 <span style="color: font-family: Verdana">testing 2</span>



Dim RegExStr As String = "</?span.*?>"

它应该删除没有文字的完整跨度,但我想只删除样式。

 <br>testing</br>
 <span>testing 2</span>

请帮助解决这个问题,

2 个答案:

答案 0 :(得分:0)

使用此正则表达式替换

(?<=<span[^<>]+)style="[^"]*"(?=[^<>]+>)|</span[^<>]*>

虽然您应该使用html解析器,或者您也可以与DOM交互并删除样式。取决于您的要求和您正在创建的内容

答案 1 :(得分:0)

Freefaller已经说过最重要的规则:不要使用RegEx来操纵Html。一些伟大的思想家为我们开发了HtmlAgilityPack,这使得工作方式更好,并且比RegEx更具可读性。

我无法使用VB.net,但代码看起来与此类似:

foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//span"))
{
  node.ParentNode.RemoveChild(node);
}

有关HtmlAgilityPack文章的更全面的概述,请访问: How to use HTML Agility pack

亲切的问候