Java 优化用于HTML解析的regexp

Java 优化用于HTML解析的regexp,java,regex,performance,Java,Regex,Performance,我使用这个正则表达式: .*[hH]([1-9])\\.\\s*(.*)\\s* 使用带有Matcher.find()方法的java 在长文本上,这个正则表达式需要很多时间才能找到结果 如何优化正则表达式?有人可以向我推荐一些优化的regexp?在尝试运行regex之前,您应该测试长文本 String longText=... if(longText.matches(myRegex)) { //Matcher.find } 这样你就不会浪费时间了 但是,如果您真的面对长文本,我建议您

我使用这个正则表达式:

.*[hH]([1-9])\\.\\s*(.*)\\s*
使用带有
Matcher.find()方法的java

在长文本上,这个正则表达式需要很多时间才能找到结果


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

在尝试运行regex之前,您应该测试长文本

String longText=...
if(longText.matches(myRegex)) {
    //Matcher.find
}
这样你就不会浪费时间了

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

您可以使用:

[hH]([1-9])\\.\\s*+(\\S+)
其中
\\S
是所有非白色字符(对
\\S
的否定)

*+
用于禁止回溯


正如Ian Roberts在他的评论中所注意到的,前面的
(.*)
在这里似乎没有用处。

你能举个例子说明你想匹配什么吗?如果你使用的是Matcher.find,那么为什么你需要前面的
*
?这里有一个例子:H1。Lorem ipsum H2。在非奥古斯奥纳雷的情况下,公共交通工具为ac,暂时为mi。在sodales odio fringilla quis中,对侵权者的权利进行了规定。悬钩子。奎斯克身份证侵权人非。。。