我需要一种高效且(合理)可靠的方法从文档中去除HTML标签。它需要能够处理一些相当不利的情况:剥离HTML标签而不使用HtmlAgilityPack
- 事先并不知道文档是否包含HTML。
- 更可能的是,任何HTML格式都会很差。
- 单个文档可能非常大,也许数百兆字节。
- 由于任何奇怪的原因,非HTML内容可能仍然会被尖括号散布,所以沿着
<.+/?>
的行的朴素正则表达式是不合适的。 (无论如何,剥离XML是不太理想的。)
我目前使用HTML Agility Pack,它只是不切割芥末。性能比我想要的更差,它并不总是能够尽可能优雅地处理真正糟糕的格式化,最近我遇到了一些堆栈溢出的问题,这些问题在一些更令人生气的大文件上出现。
我怀疑所有这些问题都源于它试图实际解析数据,这使得它不适合我的需求。我不想要一个语法树;我只想(大部分)标签消失。
使用正则表达式似乎是明显的候选。但后来我记得this famous answer,这让我担心这不是一个好主意。但是,谩骂的观点非常关注解析,而不一定是愚蠢的标签剥离。那么正则表达式可以达到这个目的吗?
假设这不是一个可怕的想法,那么对于可以很好地工作的正则表达式的建议是非常受欢迎的。
我们都读过这样的杰作......我说的是你引用的答案:) ......无论如何我们也知道使用正则表达式来处理html数据时通常很难说。我不清楚你的意思是什么意思,“我只是希望(大部分)标签消失。你是指符合特定标准的特定标签及其所有内容? – 2012-08-04 15:34:10
因为由于正则表达式模式无法描述层次结构,因此您可能使用它们只是为了实现你自己的解析策略,用正则表达式提取部分文本,并委托责任人保留或从最终结果中删除它。我不知道性能......也许不好。 – 2012-08-04 15:41:00
@DiegoDeVita我的意思是我需要从流中去除HTML标签,并保留其他内容,我说“大部分”是因为100%的可靠性不是必须的,如果奇怪的浏览器特定标签使它通过,那很好,因为该数据被传递到旨在接受嘈杂数据的软件 – 2012-08-04 18:06:00