Java正規表現-グループのキャプチャ

グループのキャプチャは、複数の文字を1つのユニットとして扱う方法です。これらは、グループ化する文字を括弧のセット内に配置することによって作成されます。たとえば、正規表現(dog)は、文字「d」、「o」、および「g」を含む単一のグループを作成します。

キャプチャグループは、左から右に開いた括弧を数えることによって番号が付けられます。たとえば、式((A)(B(C)))には、このようなグループが4つあります。

  • ((A)(B(C)))
  • (A)
  • (B(C))
  • (C)

式に存在するグループの数を確認するには、マッチャーオブジェクトでgroupCountメソッドを呼び出します。groupCountメソッドはint マッチャーのパターンに存在するキャプチャグループの数を示します。

常に式全体を表す特別なグループ、グループ0もあります。このグループは、groupCountによって報告される合計には含まれません。

次の例は、指定された英数字の文字列から数字列を見つける方法を示しています。

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

public class RegexMatches {
   public static void main( String args[] ) {
      // String to be scanned to find the pattern.
      String line = "This order was placed for QT3000! OK?";
      String pattern = "(.*)(\\d+)(.*)";

      // Create a Pattern object
      Pattern r = Pattern.compile(pattern);

      // Now create matcher object.
      Matcher m = r.matcher(line);
      
      if (m.find( )) {
         System.out.println("Found value: " + m.group(0) );
         System.out.println("Found value: " + m.group(1) );
         System.out.println("Found value: " + m.group(2) );
      } else {
         System.out.println("NO MATCH");
      }
   }
}

これにより、次の結果が生成されます-

出力

Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT300
Found value: 0