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

本文关键字:文件 最佳 方法 文本 读取 和解 | 更新日期: 2023-09-27 18:11:22

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

我想用很少的Regex行来做,这是最好和最简单的方法吗?或者c#中有一个更简单的函数可以做到这一点?

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

使用Regex 可能不是最好的方法,实际上我想说这是你能想到的众多"坏"主意之一。

你可能想看看使用HTMLAgilityPack:它会解析HTML,创建一个你可以导航的节点树,你将能够看到你感兴趣的标签,而不需要做任何"疯狂"的正则表达式。如果您避免使用regex,您将省去很多麻烦,因为在野外找到的HTML可能很糟糕、令人讨厌和野蛮,尽管通常远不短。

Regex可以工作,但你必须非常小心。HTML不是一种"常规语言",因此存在一些自由格式的例外情况。您还必须小心跨换行符的匹配。这是可以做到的。

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

如果HTML格式良好,可以尝试使用XML解析器读取它并使用那里的方法。幸运的是,框架中有一些工具可以立即实现这一点。考虑使用LINQ to XML使您的工作尽可能简单。

如果格式不好,可以使用第三方工具解析,如HTML Agility Pack

使用正则表达式解析HTML已经在SO中详细介绍过了。共识是不应该这样做。阅读这篇文章来理解为什么:

RegEx匹配开放标签,除了XHTML自包含标签

在过去,我使用SGML阅读器将HTML转换为xml,然后使用xpath/xslt/linq-to-xml来解析它。

2个选项:

1) go with your own loop

2)使用正则表达式进行更好的匹配和错误处理。(你会得到匹配的组到你的正则表达式),然后你可以迭代其中的每一个项目