我有很多文本需要处理以获取有效的URL。
输入的文本类似于HTML,但不是真正的有效HTML。
我一直在尝试使用正则表达式,但遇到了问题。
在你说(或者可能是尖叫 - 我已经阅读了其他关于HTML +正则表达式的问题)“使用解析器”之前,有一件事情你需要考虑:
我正在处理的文件大约有5 GB大小
我不知道任何可以处理这么大的文件而不失败或花费几天时间的解析器。此外,虽然文本内容在很大程度上是HTML,但并不一定是有效的HTML,这意味着它需要一个非常宽容的解析器。最后,不是所有的链接都必须放在标签中(有些可能只是纯文本)。
鉴于我并不真正关心文档结构,有没有更好的选择提取链接?
现在我正在使用以下正则表达式:
\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))
(在grep -E中)
但即使是这样,我也在让它运行了大约3个小时后放弃了。
正则表达式引擎的性能有显著差异吗?我正在使用MacOS的命令行grep
。如果有其他兼容实现具有更好的性能,则可能是一个选项。
我不太关心语言/平台,但MacOS /命令行会很好。
http://
) - icktoofay