Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Phương thức Matcher.pattern() trong Java với ví dụ


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ố