为什么模式
[0123]123456|98765
在 Java 中执行[0123]123456和98765慢两倍?因此,单独搜索它们比使用 OR 执行更快。有人有解释吗?
UPD
请参阅带有结果的测试示例: https ://gist.github.com/cy6erGn0m/5077720
UPD2
我发现原因在 java.util.regex 内部。以下测试清楚地表明:https ://gist.github.com/cy6erGn0m/5083426
如您所见,Matcher 对源字符序列发出了更多请求。所以第一个模式需要的请求比两个单独的模式多 2 倍。
多行和不区分大小写无关紧要。或运营商影响复杂性。