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