2013-09-25 119 views
-1
<br style="color: #252525">testing 1</br> 
<span style="color: font-family: Verdana">testing 2</span> 



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

它应该删除没有文本的完整跨度,但我只想删除样式。Vb.net正则表达式 - 从字符串中删除html标记

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

请帮助解决这个问题,

+1

规则1,不要使用RegEx解析HTML。规则2,如果您想使用RegEx解析HTML,请参阅规则1 – freefaller

+0

您如何使用此正则表达式? – Jerry

+0

如果您只知道HTML始终是格式良好的XML,那么这对于XSLT来说将是一个很好的应用程序。 –

回答

0

使用此正则表达式替换

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

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

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

亲切的问候

相关问题