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 group() của lớp này trả về chuỗi con khớp trong lần khớp cuối cùng.
Ví dụ 1: Lấy toàn bộ khớp (group 0)
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class GroupExample {
public static void main(String[] args) {
String str = "<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>. "
+ "It <i>also</i> contains <i>italic</i> words</p>";
// Regex khớp nội dung thẻ <b> HOẶC <i>
String regex = "<b>(\\S+)</b>|<i>(\\S+)</i>";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group()); // group 0 - toàn bộ khớp
}
}
}
Kết quả
<b>is</b> <b>example</b> <b>script</b> <b>every</b> <b>word</b> <b>bold</b> <i>also</i> <i>italic</i>
Biến thể khác chấp nhận số nguyên đại diện cho nhóm, các nhóm bắt giữ được đánh chỉ số từ 1 (từ trái sang phải).
Ví dụ 2: Truy cập các nhóm bắt giữ cụ thể
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("Toàn bộ khớp (group 0): " + matcher.group(0));
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));
}
}
}
Kết quả
Toàn bộ khớp (group 0): This is a sample Text, 1234, with numbers in between. Nhóm 1: This is a sample Text, 123 Nhóm 2: 4 Nhóm 3: , with numbers in between.
Lưu ý: group(0) luôn là toàn bộ chuỗi khớp. group(i) với i>0 là nhóm bắt giữ thứ i. Ném IllegalStateException nếu chưa khớp, IndexOutOfBoundsException nếu nhóm không tồn tại.