Javaregex-capturing-groups

提供:Dev Guides
移動先:案内検索

Java Regex-グループのキャプチャ

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

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

  • ((A)(B(C))))
  • (A)
  • (紀元前))
  • ©

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

式0を常に表す特別なグループgroup 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