おそらくあなたは、Java の動作方法にとらわれたもう 1 人のプログラマーである可能性が非常に高く、.matches()多くの人がそのメソッドの名前を間違った名前だと考えるようになりました。
これを読んで、赤い鉄を使ってこれを頭に刻み込んでください。
Java のメソッドは、引数として指定された正規表現が入力開始アンカーと入力終了アンカー.matches()で囲まれているかのように動作します。その結果、入力全体で正規表現を試行して一致させます。^$
これは、正規表現を使用する大多数のプログラミング言語で採用されている「正規表現マッチング」の定義とは異なります (そして、あなたの言語もこれに完全に同意します) 。以下の多くのコメントからわかるように、他の人は同意しません。
あれは:
"foobar".matches("foobar") == true
"foobar and something else".matches("foobar") == false
Java での実際の正規表現マッチングは、.find();を使用して行われます。そしてStringそれを持っていません。Patternaと aを使用する必要がありMatcherます。
final Pattern p = Pattern.compile("foobar");
final Matcher m = p.matcher("foobar and something else");
m.find(); // true!
m.matches(); // false!
つまりmatches()、実際にパターンを使用します"^foobar$"。