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 usePattern() của lớp Matcher chấp nhận một đối tượng Pattern đại diện cho một regex pattern mới và sử dụng nó để tìm khớp.
Ví dụ
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class UsePatternExample {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Nhập văn bản đầu vào: ");
String input = sc.nextLine();
String regex = "[#%&*]";
// Tạo đối tượng Pattern
Pattern pattern = Pattern.compile(regex);
// Tạo đối tượng Matcher
Matcher matcher = pattern.matcher(input);
int count = 0;
while (matcher.find()) {
count++;
}
// Lấy Pattern đã sử dụng
System.out.println("Có " + count + " ký tự đặc biệt [# % & *] trong văn bản đã cho");
// Xây dựng pattern mới chấp nhận 6-15 ký tự
Pattern newPattern = Pattern.compile("\\A(?=\\w{6,15}\\z)");
// Chuyển sang pattern mới
matcher = matcher.usePattern(newPattern);
if (matcher.find()) {
System.out.println("Đầu vào đã cho chứa 6 đến 15 ký tự");
} else {
System.out.println("Đầu vào đã cho không chứa 6 đến 15 ký tự");
}
}
}
Kết quả
Nhập văn bản đầu vào: #*mypassword& Có 3 ký tự đặc biệt [# % & *] trong văn bản đã cho !!mypassword! Đầu vào đã cho không chứa 6 đến 15 ký tự