Lớp java.util.regex.Matcher đại diện cho một engine thực hiện các phép toán khớp khác nhau. Không có constructor cho lớp này, bạn có thể tạo/nhận đối tượng của lớp này bằng phương thức matcher() của lớp java.util.regex.Pattern.
Phương thức groupCount() của lớp này tính toán số lượng capturing groups (nhóm bắt giữ) trong khớp hiện tại.
Ví dụ 1: Đếm nhóm với regex có 3 nhóm
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class GroupTest {
public static void main(String[] args) {
String regex = "(.*)(\\d+)(.*)";
String input = "This is a sample Text, 1234, with numbers in between.";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
System.out.println("Nhóm 1: " + matcher.group(1));
System.out.println("Nhóm 2: " + matcher.group(2));
System.out.println("Nhóm 3: " + matcher.group(3));
System.out.println("Số nhóm bắt giữ: " + matcher.groupCount());
}
}
}
Kết quả
Nhóm 1: This is a sample Text, 123 Nhóm 2: 4 Nhóm 3: , with numbers in between. Số nhóm: 3
Ví dụ 2: Regex với nhóm lồng nhau
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String str1 = "<p>This <b>is</b> an <b>example</b>HTML <b>script</b> where <b>every</b> alternative <b>word</b> is <b>bold</b></p>.";
String regex = "(t(\\S+)t)(\\s)";
String str = "the words tit tat tweet tostff tact that tilt text start and end wit the letter t ";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group(0));
}
System.out.println("Tổng nhóm bắt giữ: " + matcher.groupCount());
}
}
Kết quả
tit tat tweet tact that tilt text tart Tổng nhóm bắt giữ: 3
Giải thích: Regex (t(\\S+)t)(\\s) có 3 nhóm: nhóm 1 là toàn bộ t...t, nhóm 2 là \\S+ bên trong, nhóm 3 là \\s.