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 pattern() của lớp (Matcher) này lấy và trả về một đối tượng Pattern được giải thích bởi matcher hiện tại.
Ví dụ 1: Lấy pattern dùng để validate ngày tháng
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PatternExample {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Nhập ngày sinh (MM/DD/YYYY)");
String date = sc.next();
String regex = "^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(date);
// Validate ngày
if (matcher.matches())
System.out.println("Ngày hợp lệ");
else
System.out.println("Ngày không hợp lệ");
// Lấy Pattern đã dùng
Pattern p = matcher.pattern();
System.out.println("Pattern dùng để khớp ngày: \n" + p);
}
}
Kết quả
Nhập ngày sinh 01/21/2019
Ngày hợp lệ
Pattern dùng để khớp ngày: ^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$
Ví dụ 2: Kiểm tra ký tự đầu là chữ số
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PatternExample {
public static void main(String args[]) {
System.out.println("Nhập một chuỗi");
Scanner sc = new Scanner(System.in);
String input = sc.next();
// Regex: bắt đầu bằng chữ số
String regex = "^[0-9].*$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
Pattern p = matcher.pattern();
System.out.println("Pattern dùng: " + p);
if (matcher.matches())
System.out.println("Ký tự đầu là chữ số");
else
System.out.println("Ký tự đầu không phải chữ số");
}
}
Kết quả
Nhập một chuỗi: 2sample Pattern dùng: ^[0-9].*$ Ký tự đầu là chữ số