【问题标题】:Vb.net Regex-remove html tags from stringVb.net Regex-从字符串中删除html标签
【发布时间】:2013-09-25 20:11:08
【问题描述】:
 <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>

请帮助解决这个问题,

【问题讨论】:

  • 规则 1,不要使用 RegEx 解析 HTML。规则2,如果你想使用RegEx来解析HTML,请看规则1
  • 你是如何使用这个正则表达式的?
  • 如果您知道 HTML 总是格式良好的 XML,这将是 XSLT 的一个很好的应用程序。

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


【解决方案1】:

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

亲切的问候

【讨论】:

    【解决方案2】:

    使用这个正则表达式替换

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-24
      • 1970-01-01
      • 1970-01-01
      • 2021-02-05
      相关资源
      最近更新 更多