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

Phương thức compile() của Pattern trong Java với các ví dụ

Lớp Pattern của gói java.regex là biểu diễn đã biên dịch của một biểu thức chính quy.

Phương thức compile() của lớp này nhận một giá trị chuỗi đại diện cho biểu thức chính quy và trả về một đối tượng Pattern.

Ví dụ 1

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CompileExample {
    public static void main(String args[]) {
        // Đọc giá trị chuỗi
        Scanner sc = new Scanner(System.in);
        System.out.println("Nhập chuỗi đầu vào");
        String input = sc.nextLine();
        
        // Biểu thức chính quy để tìm chữ số
        String regex = "(\\d)";
        
        // Biên dịch biểu thức chính quy
        Pattern pattern = Pattern.compile(regex);
        
        // In biểu thức chính quy đã biên dịch
        System.out.println("Biểu thức chính quy đã biên dịch: " + pattern.toString());
        
        // Lấy đối tượng matcher
        Matcher matcher = pattern.matcher(input);
        
        // Kiểm tra xem có khớp không
        if (matcher.find()) {
            System.out.println("Chuỗi đã cho chứa chữ số");
        } else {
            System.out.println("Chuỗi đã cho không chứa chữ số");
        }
    }
}

Kết quả

Nhập chuỗi đầu vào hello my id is 1120KKA
Biểu thức chính quy đã biên dịch: (\d)
Chuỗi đã cho chứa chữ số

Một biến thể khác của phương thức này chấp nhận một giá trị nguyên đại diện cho các cờ (flags), nơi mỗi cờ chỉ định một điều kiện tùy chọn, ví dụ: CASE_INSENSITIVE bỏ qua chữ hoa/thường khi biên dịch biểu thức chính quy.

Ví dụ 2 (với flag)

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CompileExample {
    public static void main(String args[]) {
        // Biên dịch biểu thức chính quy với flag
        Pattern pattern = Pattern.compile("[t]", Pattern.CASE_INSENSITIVE);
        
        // Lấy đối tượng matcher
        Matcher matcher = pattern.matcher("Tutorialspoint");
        int count = 0;
        while (matcher.find()) {
            count++;
        }
        System.out.println("Số lần khớp: " + count);
    }
}

Kết quả

Số lần khớp: 3