我想要一个正则表达式来删除以下内容:
<a class="a" href="a.com">string</a>
我想要的是如果标签中有一个类属性我希望删除整个标签(<a class="a" href="a.com"></a>
)和检索标签之间的字符串(string
),否则保持原样。
答案 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)>
这不是失败证明,但它应该处理大多数情况。检查链接是否有效。