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

JavaのMatchResultインターフェースgroup()メソッドとは?使い方を実行例付きで解説

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

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

このインターフェースが持つgroup()メソッドは、直前のマッチにおいて入力シーケンスから実際にマッチした部分文字列を表す文字列値を返します。

group()メソッドの基本構文

String group()

引数なしで呼び出した場合、group(0)と同等の動作となり、パターン全体にマッチした文字列が返されます。

使用例

以下の例では、ユーザーから入力されたテキストに対して正規表現パターン (.*)(\d+)(.*) を適用し、マッチが見つかったかどうかを確認した後、toMatchResult()メソッドで取得したMatchResultオブジェクトのgroup()メソッドを使って、マッチした文字列を表示しています。

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("入力テキストを入力してください: ");
      String input = sc.nextLine();
      // Patternクラスのインスタンス化
      Pattern pattern = Pattern.compile(regex);
      // Matcherクラスのインスタンス化
      Matcher matcher = pattern.matcher(input);
      // マッチが存在するかどうかを確認
      if(matcher.find()) {
         System.out.println("マッチが見つかりました");
      }
      MatchResult res = matcher.toMatchResult();
      String matchedData = res.group();
      System.out.println(matchedData);
   }
}

実行結果

入力テキストを入力してください:
This is a sample Text, 123
マッチが見つかりました
This is a sample Text, 123

補足:group(int group)メソッドとの違い

引数なしのgroup()メソッドはパターン全体にマッチした文字列を返しますが、引数にキャプチャグループ番号を指定すると、そのグループに対応する部分文字列を個別に取得できます。上記の例の場合、group(1)は「This is a sample Text, 」、group(2)は「123」、group(3)は空文字列を返します。マッチ結果を細かく分析したい場合は、引数付きのgroup()メソッドを活用すると便利です。

  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 型です。「実際にどの正規表現で照合を行ったのか」を後から確認したい場合などに便利なメソッドです。