我需要一种有效且(合理)可靠的方式从文档中去除 HTML 标记。它需要能够处理一些相当不利的情况:
- 根本不知道文档是否包含 HTML。
- 很可能,任何 HTML 的格式都会很差。
- 单个文档可能非常大,可能有数百兆字节。
- 无论出于什么奇怪的原因,非 HTML 内容可能仍然会充斥着尖括号,所以天真的正则表达式沿线是行不通的
<.+/?>
。(无论如何,剥离 XML 是不太可取的。)
我目前正在使用 HTML Agility Pack,它只是没有减少芥末。性能比我想要的要差,它并不总是尽可能优雅地处理真正糟糕的格式,最近我遇到了一些更令人不安的大文件的堆栈溢出问题。
我怀疑所有这些问题都源于它试图真正解析数据,这使得它不适合我的需求。我不想要语法树;我只想(大部分)标签消失。
使用正则表达式似乎是显而易见的选择。但后来我想起了这个著名的答案,这让我担心这不是一个好主意。但是那个谩骂的重点非常集中在解析上,而不一定是愚蠢的标签剥离。那么正则表达式可以用于此目的吗?
假设这不是一个糟糕的主意,非常欢迎对正则表达式提出好的建议。