优化正则表达式以进行 HTML 解析



我使用这个正则表达式:

.*[hH]([1-9])\.\s*(.*)\s*

使用 Java 和 Matcher.find() 方法。

在长文本上,此正则表达式需要花费大量时间才能找到结果。

如何优化正则表达式?有人可以向我提出一些优化的正则表达式吗?

你可以使用这个:

[hH]([1-9])\.\s*+(\S+)

其中\S是不是白色字符的全部(\s的否定)

所有格量词*+用于禁止回溯。

正如伊恩·罗伯茨(Ian Roberts)在他的评论中注意到的那样,领先的(.*)在这里似乎毫无用处。

您应该在尝试对长文本运行正则表达式之前对其进行测试。

String longText=...
if(longText.matches(myRegex)) {
    //Matcher.find
}

这样你就不会浪费你的时间。

但是,如果您真的面对长文本,我可以建议您使用功能强大的 html 解析器 Jsoup 吗?

最新更新