なぜパターン
[0123]123456|98765
Javaで[0123]123456を実行してから98765を実行すると2倍遅くなりますか? したがって、OR で実行するよりも、個別に検索する方が高速です。誰か説明がありますか?
UPD
結果のテスト例については、 https ://gist.github.com/cy6erGn0m/5077720 を参照してください。
UPD2
その理由が java.util.regex 内にあることを発見しました。次のテストで明らかになります: https://gist.github.com/cy6erGn0m/5083426
ご覧のとおり、Matcher は source char シーケンスに対して大幅に多くのリクエストを行います。したがって、最初のパターンでは、2 つの個別のパターンよりも約 2 倍多くのリクエストを調達する必要があります。
複数行および大文字と小文字を区別しないことは無関係です。または、演算子が複雑さに影響します。