String.matches() の不一致を理解する
Java で正規表現を使用して文字列を検証しようとすると、予期しない動作が発生する可能性がありますString.matches() メソッドを使用します。このメソッドの目的は文字列内の部分文字列の一致を意味しますが、実際には指定された正規表現に対して文字列全体を一致させようとします。
次のコード スニペットを考えてみましょう。
String[] words = {"{apf","hum_","dkoe","12f"}; for(String s:words) { if(s.matches("[a-z]")) { System.out.println(s); } }
Asお気づきかと思いますが、このコードは、目的の部分文字列と一致せず、文字列全体に小文字のみが含まれているかどうかをチェックしているため、予期した出力 (「dkoe」) を出力できません。
解決策: Pattern と Matcher の使用
この問題を解決するには、Pattern クラスと Matcher クラスを .find() メソッドとともに使用して、正規表現が入力テキスト内の任意の部分文字列と一致する場合。このアプローチには次の手順が含まれます。
例を示します:
Pattern p = Pattern.compile("[a-z]"); Matcher m = p.matcher(inputstring); if (m.find()) // match found
入力に小文字のみが含まれていることを確認したい場合は、次の正規表現を使用できます: ^[a-z] $ 。 .matches() の代わりに .find() を使用することを忘れないでください。
以上がJava の「String.matches()」が部分文字列の一致に失敗するのはなぜですか? 正規表現を使用して部分文字列を正しく一致させるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。