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

JavaのMatchResultインターフェースgroupCount()メソッドの使い方と実行例

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

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

そして、このインターフェースが持つgroupCount()メソッドは、対象となる正規表現に含まれるキャプチャリンググループの数をカウントし、その値をint型として返します。

groupCount()メソッドのポイント

  • 戻り値は「グループの総数」であり、グループ0(パターン全体に一致する部分)は含まれません。
  • 括弧()で囲まれた部分が1つのグループとしてカウントされます。

サンプルプログラム

以下の例では、ユーザーから入力を受け取り、正規表現 (.*)(\d+)(.*) とのマッチを行った後、toMatchResult()でMatchResultオブジェクトを取得し、groupCount()によってグループ数を出力しています。

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

public class GroupCount {
    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オブジェクトを取得
        MatchResult res = matcher.toMatchResult();
        // グループ数を取得して表示
        int count = res.groupCount();
        System.out.println("グループの数: "+count);
    }
}

実行結果

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

この出力から分かるように、正規表現 (.*)(\d+)(.*) には3つの括弧で囲まれたグループが含まれているため、groupCount()メソッドは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 型です。「実際にどの正規表現で照合を行ったのか」を後から確認したい場合などに便利なメソッドです。