正则表达式删除?

时间:2012-02-08 11:15:35

标签: c# regex

我想要一个正则表达式来删除以下内容:

<a class="a" href="a.com">string</a>

我想要的是如果标签中有一个类属性我希望删除整个标签(<a class="a" href="a.com"></a>)和检索标签之间的字符串(string),否则保持原样。

2 个答案:

答案 0 :(得分:3)

我建议使用像HTML Agility Pack这样的HTML解析器,而不是尝试使用RegEx执行此操作 - RegEx不是用于解析常规HTML的好工具,如this answer explains

下载附带了一堆Visual Studio项目作为使用示例。

  

什么是Html Agility Pack(HAP)?

     

这是一个敏捷的HTML解析器,它构建一个读/写DOM并支持普通的XPATH或XSLT(你实际上不需要理解XPATH或XSLT来使用它,不用担心......)。它是一个.NET代码库,允许您解析“out of the web”HTML文件。解析器非常容忍“真实世界”格式错误的HTML。对象模型与提出System.Xml非常相似,但对于HTML文档(或流)。

     

Html Agility Pack现在支持Linq to Objects(通过LINQ to Xml Like界面)。查看要使用此功能的新测试版

答案 1 :(得分:0)

鉴于您想要解析HTML,使用XML解析器会更好,这是其他人已经建议的。

但是既然你想要正则表达式,我就想出了这个:http://regexr.com?2vuqs

<([^ ]+)([ \t]+[a-zA-Z-]+=(["'])[^\3]+?\3)*[ \t]+class=(["'])[^\4]\4([ \t]+[a-zA-Z-]+=(["'])[^\6]+?\6)*>([^<]+)</(\1)>

这不是失败证明,但它应该处理大多数情况。检查链接是否有效。