优化HTML解析的正则表达式

时间:2013-12-18 14:46:50

标签: java regex performance

我使用这个正则表达式:

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

使用带Matcher.find()方法的java。

在长篇文章中,这个正则表达式需要花费大量时间才能找到结果。

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

2 个答案:

答案 0 :(得分:2)

您可以使用:

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

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

Possessive quantifiers *+用于禁止回溯。

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

答案 1 :(得分:0)

你应该在试图对它运行正则表达式之前测试长文本

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

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

但是,如果您真的遇到longt文本,我建议您使用功能强大的html解析器 Jsoup吗?