Java Regex - группы захвата

Группы захвата - это способ рассматривать несколько символов как единое целое. Они создаются путем помещения группируемых символов в круглые скобки. Например, регулярное выражение (собака) создает одну группу, содержащую буквы «d», «o» и «g».

Группы захвата нумеруются путем подсчета их открывающих скобок слева направо. В выражении ((A) (B (C))), например, есть четыре таких группы -

  • ((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