Ben*_*n S 0 java regex optimization performance
我有几个正则表达式针对非常长的字符串运行.然而,关于RE的字符串的唯一部分接近开头.大多数RE类似于:
\\s+?(\\w+?).*
Run Code Online (Sandbox Code Playgroud)
RE在开始附近捕获了几个组,并不关心字符串的其余部分.出于性能原因,有没有办法让RE引擎避免查看终止所消耗的所有字符.*?
注意:带有RE的应用程序是使用java.regex类编写的.
编辑:例如我有以下RE:
.*?id="number"[^>]*?>([^<]+?).*
Run Code Online (Sandbox Code Playgroud)
哪个是针对存储为StringBuilders的大型HTML文件运行的.标签id="number"始终位于HTML文件的开头附近.
使用java.util.regex类时,有许多方法可以匹配给定的字符串.Matcher.matches始终匹配整个输入字符串.在输入字符串中的某处Matcher.find查找与正则表达式匹配的内容.最后,将正则表达式与输入字符串的开头匹配.Matcher.lookingAt
如果您正在使用Matcher.matches,则可能需要.*在最后匹配整个字符串.但是,您可能最好使用其他方法之一,这将允许您放弃.*.听起来Matcher.lookingAt可能适合您的目的.