Chức năng
group(int group) trả về substring khớp của group chỉ định trong match cuối.
Ví dụ
import java.util.Scanner;
import java.util.regex.MatchResult;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class GroupExample {
public static void main(String[] args) {
String regex = "(.*)(\\d+)(.*)";
Scanner sc = new Scanner(System.in);
System.out.println("Nhập văn bản: ");
String input = sc.nextLine();
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
System.out.println("Match found");
}
MatchResult res = matcher.toMatchResult();
String matchedData = res.group(2); // group 2 = (\\d+)
System.out.println(matchedData);
}
}
Kết quả
Nhập văn bản: This is a sample Text, 123
Match found
3
Giải thích
Input: "This is a sample Text, 123"
- Group 1
(.*): "This is a sample Text, " (greedy, ăn hết có thể) - Group 2
(\\d+): "123" (số cuối) - Group 3
(.*): "" (rỗng) - Kết quả in ra group(2) = "123" nhưng output ghi "3" - có thể lỗi ví dụ gốc. Group 2 thực tế là "123".
Sửa ví dụ cho đúng
// Regex tốt hơn để demo group:
String regex = "(.*)(\\d+)";
Input: "Text 123"
Group 1: "Text "
Group 2: "123"
res.group(2) -> "123"