我有一个包含HTML代码的文本文件,我想只使用特定的标签并使用C#保存它们!
我想用很少的Regex系列做到这一点,这是最好和最简单的方法吗?!或者C#中有一个更容易的功能可以做到吗?
答案 0 :(得分:3)
使用正则表达式可能不是最好的方法,实际上我会说这是你能想到的众多“坏”想法之一。
您可能希望查看使用HTMLAgilityPack:它将解析HTML,创建一个可以导航的节点树,您将能够查看您感兴趣的标记而无需执行任何操作“疯狂”正则表达。如果你避免正则表达式,那么你将免除很多麻烦,因为HTML as it is found in the wild can be poor, nasty and brutish, though quite often far from short。
答案 1 :(得分:1)
正则表达式可以工作,但你必须非常小心。 HTML不是一种“常规语言”,因此有一些可以解决问题的自由格式异常。您还必须小心跨越换行符匹配。它可以做到。
答案 2 :(得分:1)
如果HTML格式正确,您可以尝试使用XML解析器读取它并使用那里的方法。幸运的是,框架中可以立即使用这些工具来完成此任务。考虑使用LINQ to XML使您的工作尽可能简单。
否则,如果格式不正确,您可以使用第三方工具对其进行解析,例如HTML Agility Pack。
答案 3 :(得分:1)
在SO上详细介绍了使用正则表达式解析HTML。共识是不应该这样做。给这篇文章读一读,了解原因:
RegEx match open tags except XHTML self-contained tags
过去我使用SGML reader将HTML转换为xml,然后使用xpath / xslt / linq-to-xml来解析它。这对你也有用。
答案 4 :(得分:-1)
2个选项:
1)自带循环
2)使用正则表达式来获得更好的匹配和错误。 (你可以将匹配的组与你的正则表达式相匹配)然后你可以迭代其中的每个项目