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

JavaのMatchResultインターフェースにおけるgroup(int group)メソッドの使い方【実例付き】

java.util.regex.MatchResultインターフェースは、正規表現によるマッチ結果を取得するための各種メソッドを提供します。

このインターフェースのオブジェクトは、MatcherクラスのtoMatchResult()メソッドを使って取得できます。このメソッドは、現在のマッチャーのマッチ状態を表すMatchResultオブジェクトを返します。

このインターフェースが持つgroup(int group)メソッドは、対象となるグループ番号を整数値として受け取り、直前のマッチ処理において、指定されたグループに対応する入力シーケンス中のマッチ部分文字列をString型で返します。

サンプルコード

import java.util.Scanner;
import java.util.regex.MatchResult;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class GroupExample {
    public static void main( String args[] ) {
        String regex = "(.*)(\\d+)(.*)";
        // ユーザーからの入力を読み込む
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter input text: ");
        String input = sc.nextLine();
        // Patternクラスのインスタンス化
        Pattern pattern = Pattern.compile(regex);
        // Matcherクラスのインスタンス化
        Matcher matcher = pattern.matcher(input);
        // マッチが発生したかどうかを確認
        if(matcher.find()) {
            System.out.println("Match found");
        }
        MatchResult res = matcher.toMatchResult();
        String matchedData = res.group(2);
        System.out.println(matchedData);
    }
}

実行結果

Enter input text:
This is a sample Text, 123
Match found
3

コードの解説

この例では、正規表現(.*)(\d+)(.*)を定義しています。このパターンは3つのキャプチャリンググループで構成されており、第1グループは数字の前の任意の文字列、第2グループは連続する数字(\d+)、第3グループは数字の後の任意の文字列に対応します。

ユーザーが「This is a sample Text, 123」と入力した場合、find()メソッドによってマッチが確認され、その後toMatchResult()でMatchResultオブジェクトを取得します。group(2)を呼び出すことで、第2グループに該当する「123」の末尾の数字「3」が出力されます。

  1. 【Java入門】Matcherクラスのreset()メソッドの使い方を実例付きで解説

    java.util.regex.Matcher クラスは、正規表現によるさまざまなマッチ操作を実行するエンジンを表すクラスです。このクラスにはコンストラクタが用意されておらず、java.util.regex.Pattern クラスの matcher() メソッドを使うことで、Matcher オブジェクトを生成・取得できます。Matcher クラスの reset() メソッドを呼び出すと、マッチャーが保持しているすべての状態情報が破棄され、文字シーケンスはデフォルトの状態に戻り、追加位置(append position)もゼロにリセットされます。つまり、同じ Matcher オブジェクトを最初か

  2. 例で学ぶJava Matcherクラスのpattern()メソッド

    java.util.regex.Matcher クラスは、正規表現による各種マッチ操作を実行するエンジンを表すクラスです。このクラスにはコンストラクタが用意されていないため、java.util.regex.Pattern クラスの matcher() メソッドを使用してオブジェクトを生成・取得します。 pattern() メソッドは、現在の Matcher が解釈に使用している Pattern オブジェクトを取得して返します。引数は不要で、戻り値は java.util.regex.Pattern 型です。「実際にどの正規表現で照合を行ったのか」を後から確認したい場合などに便利なメソッドです。