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中,对侵权者的权利进行了规定。悬钩子。奎斯克身份证侵权人非。。。