私はいくつかのコードのパフォーマンスを向上させようとしています。文字列が正規表現でないかどうかを確認するにはどうすればよいですか?
public boolean isImportant(String token) {
for (Pattern pattern : patterns) {
return pattern.matches(token).find();
}
}
私が気づいたことは、多くのパターンが正規表現構文のない単純な文字列リテラルであるように見えることです。特定の文字列がありませんが含まれている場合
public boolean isImportant(String token) {
if (importantList.contains(token)) return true;
for (Pattern pattern : patterns) {
return pattern.matches(token).find();
}
}
をどのように私はプログラム的に決定します:だから私は、次のような、単に別のリスト(importantList)でこれらを格納し、代わりに、より高価なパターンマッチを実行するの平等のテストをしたいです正規表現の構文?
編集: 回答にパフォーマンスを重視する必要はありません。 (すなわち、正規表現を使用することができます)私は主にisImportant()のパフォーマンスに関心があります。なぜなら、パターンの初期化は1回だけ行われるのに対し、何百万回も呼び出されるからです。
正規表現であるかどうかを判断するために文字列に正規表現を使用しないで、各文字列を正規表現として使用するよりもはるかに悪くなるでしょうか? –
@MikeM:それは彼が求めているものではありません。 'hello'は完全に有効な正規表現です。 –
普通の文字列リテラルでパターンを見つけない限り、簡単ではないか、価値がありません。単純な文字列リテラルは有効な正規表現パターンです。 – AC1