ホームページ >Java >&#&チュートリアル >正規表現で「String.matches()」が期待どおりに動作しないのはなぜですか?
String.matches() が予期された正規表現と一致しません
String.matches("[a-z ]")、文字列に小文字が含まれているにもかかわらず、期待どおりに動作しないことは驚くべきことです。文字。
説明:
Java の String.matches() メソッドは、入力文字列全体が指定された正規表現と一致するかどうかを判断するように設計されています。この場合、式「[a-z]」は 1 つの小文字と一致しようとしています。ただし、コードは単語配列内の各文字列をチェックしますが、小文字で始まる文字列はありません。
解決策:
文字列内のパターンと一致するには、 Pattern クラスと Matcher クラスを使用する必要があります。 Pattern クラスは、正規表現を Matcher オブジェクトにコンパイルします。このオブジェクトは、入力文字列内の一致をチェックするために使用できます。
これは、Pattern と Matcher を使用して一致を見つけるコードの修正バージョンです。
Pattern p = Pattern.compile("[a-z]+"); for(String s:words) { Matcher m = p.matcher(s); if (m.find()) { System.out.println(s); } }
このコードは「dkoe」を正しく出力するようになりました。
以上が正規表現で「String.matches()」が期待どおりに動作しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。