ホームページ >Java >&#&チュートリアル >正規表現で「String.matches()」が期待どおりに動作しないのはなぜですか?

正規表現で「String.matches()」が期待どおりに動作しないのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-26 05:18:10462ブラウズ

Why Doesn't `String.matches()` Work as Expected with Regular Expressions?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。