【发布时间】:2012-02-25 21:23:30
【问题描述】:
我需要为有效的 URL 处理大量文本。
输入是模糊的 HTMLish,因为它主要是 html。然而,它并不是真正的有效 HTML。
我*一直在尝试使用正则表达式,但遇到了问题。
在您说(或可能尖叫 - 我已阅读其他 HTML + 正则表达式问题)“使用解析器”之前,您需要考虑一件事:
我正在使用的文件大小约为 5 GB
我不知道任何解析器可以在不失败或花费数天的情况下处理它。此外,虽然文本内容是大部分 html,但不一定是有效 html,这意味着它需要一个非常宽容的解析器。最后,并非所有链接都必须在<a> 标签中(有些可能只是纯文本)。
鉴于我并不真正关心文档结构,有没有更好的替代方法 WRT 提取链接?
现在我正在使用正则表达式:\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))(在 grep -E 中)
但即便如此,我还是在让它运行了大约 3 个小时后就放弃了。
Regex 引擎的性能是否存在显着差异?我正在使用 MacOS 的命令行grep。如果有其他性能更好的兼容实现,那可能是一种选择。
我不太关心语言/平台,尽管 MacOS/命令行会很好。
【问题讨论】:
-
它应该在没有计划的情况下捕获东西吗? (即没有
http://) -
@icktoofay - 那太好了。
标签: html regex large-files