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 toMatchResult() của lớp này trả về trạng thái khớp (match state) của matcher hiện tại.
Ví dụ 1: Theo dõi trạng thái matcher trong vòng lặp
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ToMatchResultExample {
public static void main(String[] args) {
String str = "<p>This <b>is</b> an <b>example</b>.</p>";
String regex = "<b>(\\S+)</b>";
Pattern pattern = Pattern.compile(regex);
System.out.println("Trạng thái matcher: ");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.toMatchResult());
String result = matcher.group(1);
}
matcher = matcher.reset("<p>this is another <b>line</b>.</p>");
matcher.find();
System.out.println("");
System.out.println("Trạng thái matcher sau khi reset: \n" + matcher.toMatchResult());
}
}
Kết quả
Trạng thái matcher: java.util.regex.Matcher[pattern=<b>(\S+)</b> region=0,40 lastmatch=<b>is</b>] java.util.regex.Matcher[pattern=<b>(\S+)</b> region=0,40 lastmatch=<b>example</b>] Trạng thái matcher sau khi reset: java.util.regex.Matcher[pattern=<b>(\S+)</b> region=0,35 lastmatch=<b>line</b>]
Ví dụ 2: Trạng thái khi khớp ký tự #
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ToMatchResultExample {
public static void main(String[] args) {
String regex = "[#]";
System.out.println("Nhập một chuỗi: ");
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
System.out.println("Trạng thái khớp: ");
while (matcher.find()) {
System.out.println(matcher.toMatchResult());
}
}
}
Kết quả
Nhập một chuỗi: #This #is #a #sample #text Trạng thái khớp: java.util.regex.Matcher[pattern=[#] region=0,26 lastmatch=#] java.util.regex.Matcher[pattern=[#] region=0,26 lastmatch=#] java.util.regex.Matcher[pattern=[#] region=0,26 lastmatch=#] java.util.regex.Matcher[pattern=[#] region=0,26 lastmatch=#] java.util.regex.Matcher[pattern=[#] region=0,26 lastmatch=#]