Java
 Computer >> コンピューター >  >> プログラミング >> Java

Java Matcherクラスのfind()メソッドとは?使い方とサンプルコードで解説

java.util.regex.Matcherクラスは、正規表現によるさまざまなマッチ操作を実行するエンジンを表すクラスです。このクラスにはコンストラクタが用意されておらず、java.util.regex.Patternクラスのmatcher()メソッドを使ってオブジェクトを生成・取得します。

find()メソッドは、現在のMatcherオブジェクトに対して、入力シーケンスの中から次にパターンに一致する部分を検索します。マッチが見つかればtrueを返し、見つからなければfalseを返します。

find()メソッドの基本的な動作

  • 呼び出されるたびに、前回マッチした位置の続きから次の一致箇所を検索します。
  • 繰り返し呼び出すことで、入力文字列内のすべての一致箇所を順番に取得できます。
  • マッチが成功した場合、start()やgroup()などのメソッドで一致位置や一致文字列の詳細を取得できます。

サンプルコード

以下の例では、ユーザーが入力した文字列に数字以外の文字(\D)が含まれているかどうかを、find()メソッドを使って判定しています。

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class FindExample {
    public static void main(String args[]) {
        // 文字列の読み込み
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter input string");
        String input = sc.nextLine();

        // 数字以外の文字に一致する正規表現
        String regex = "(\\D)";

        // 正規表現のコンパイル
        Pattern pattern = Pattern.compile(regex);

        // Matcherオブジェクトの取得
        Matcher matcher = pattern.matcher(input);

        // マッチしたかどうかを確認
        if (matcher.find()) {
            System.out.println("Given string contain non-digit characters");
        } else {
            System.out.println("Given string does not contain non-digit characters");
        }
    }
}

実行結果

Enter input string
11245#
Given string contain non-digit characters

コードの解説

この例で使用している正規表現「\D」は、「数字以外の1文字」に一致するパターンです。入力例「11245#」には記号「#」が含まれているため、find()メソッドはマッチを見つけてtrueを返し、「数字以外の文字が含まれている」というメッセージが出力されます。

一方、入力がすべて数字(例:「11245」)であれば、\Dに一致する文字が存在しないため、find()はfalseを返し、elseブロックのメッセージが表示されます。このようにfind()メソッドは、文字列の中に特定のパターンが存在するかどうかを簡潔に判定したい場面で非常に便利です。

  1. Java Matcherクラスのfind()メソッドとは?使い方とサンプルコードで解説

    java.util.regex.Matcherクラスは、正規表現によるさまざまなマッチ操作を実行するエンジンを表すクラスです。このクラスにはコンストラクタが用意されておらず、java.util.regex.Patternクラスのmatcher()メソッドを使ってオブジェクトを生成・取得します。 find()メソッドは、現在のMatcherオブジェクトに対して、入力シーケンスの中から次にパターンに一致する部分を検索します。マッチが見つかればtrueを返し、見つからなければfalseを返します。 find()メソッドの基本的な動作 呼び出されるたびに、前回マッチした位置の続きから次の一致箇所を検

  2. Java Matcherクラスのend()メソッドとは?サンプルコード付きで解説

    java.util.regex.Matcher クラスは、正規表現によるさまざまなマッチ操作を実行するエンジンを表すクラスです。このクラスにはコンストラクタが用意されておらず、java.util.regex.Pattern クラスの matcher() メソッドを使用してオブジェクトを取得します。 Matcher クラスの end() メソッドは、現在の Matcher オブジェクトが保持している最後のマッチの終了位置(オフセット)を int 型で返します。つまり、マッチした部分文字列の最後の文字の「次の位置」を取得できます。 また、部分式 [...] は、角括弧内に指定した文字のいずれか1文