在C#中读取和解析文本文件的最佳方法

时间:2011-10-14 20:45:05

标签: c# regex parsing

我有一个包含HTML代码的文本文件,我想只使用特定的标签并使用C#保存它们!

我想用很少的Regex系列做到这一点,这是最好和最简单的方法吗?!或者C#中有一个更容易的功能可以做到吗?

5 个答案:

答案 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不是一种“常规语言”,因此有一些可以解决问题的自由格式异常。您还必须小心跨越换行符匹配。它可以做到。

查看: http://htmlagilitypack.codeplex.com/

答案 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)使用正则表达式来获得更好的匹配和错误。 (你可以将匹配的组与你的正则表达式相匹配)然后你可以迭代其中的每个项目