ホームページ > Java > &#&チュートリアル > Java の「String.matches()」が部分文字列の一致に失敗するのはなぜですか? 正規表現を使用して部分文字列を正しく一致させるにはどうすればよいですか?

Java の「String.matches()」が部分文字列の一致に失敗するのはなぜですか? 正規表現を使用して部分文字列を正しく一致させるにはどうすればよいですか?

DDD
リリース: 2024-12-02 03:14:15
オリジナル
890 人が閲覧しました

Why Does Java's `String.matches()` Fail to Match Substrings, and How Can I Correctly Match Substrings Using Regular Expressions?

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() メソッドとともに使用して、正規表現が入力テキスト内の任意の部分文字列と一致する場合。このアプローチには次の手順が含まれます。

  1. 正規表現をコンパイルして Pattern オブジェクトを作成します。
  2. 入力文字列にパターンを適用して Matcher オブジェクトを作成します。
  3. マッチャーの .find() メソッドを使用して、パターンが一致するかどうかを確認します。 substring.

例を示します:

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート