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

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


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

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

static Pattern compile(String regex)

Biến thể khác chấp nhận int flag:

static Pattern compile(String regex, int flags)

Lớp Pattern cung cấp các trường (fields) đại diện cho các flag:

S.NoTrường và Mô tả
1CANON_EQ
Khớp 2 ký tự chỉ khi canonically equal.
2CASE_INSENSITIVE
Khớp không phân biệt hoa/thường.
3COMMENTS
Cho phép khoảng trắng và comment trong pattern.
4DOTALL
Bật dotall mode: '.' khớp cả line terminator.
5LITERAL
Phân tích literal: metacharacter không có ý nghĩa đặc biệt.
6MULTILINE
Bật multiline: ^ $ khớp đầu/cuối mỗi dòng.
7UNICODE_CASE
Case folding nhận biết Unicode (kết hợp CASE_INSENSITIVE).
8UNICODE_CHARACTER_CLASS
Bật phiên bản Unicode cho predefined/POSIX char classes.
9UNIX_LINES
Chế độ dòng Unix: chỉ \n là line terminator.

Phương thức flags() trả về giá trị int đại diện cho flag(s) đã dùng trong pattern hiện tại (bitwise OR của các flag).

Ví dụ

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

public class COMMENTES_Example {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Nhập tên: ");
        String name = sc.nextLine();
        System.out.println("Nhập ngày sinh (MM/DD/YYYY): ");
        String dob = sc.nextLine();
        
        String regex = "^(1[0-2]|0[1-9])/ # For Month\n"
                + "(3[01]|[12][0-9]|0[1-9])/ # For Date\n"
                + "[0-9]{4}$ # For Year";
        
        Pattern pattern = Pattern.compile(regex, Pattern.COMMENTS);
        Matcher matcher = pattern.matcher(dob);
        
        boolean result = matcher.matches();
        if (result) {
            System.out.println("Ngày sinh hợp lệ");
        } else {
            System.out.println("Ngày sinh không hợp lệ");
        }
        
        System.out.println("Flag đã dùng (int): " + pattern.flags());
    }
}

Kết quả

Nhập tên: Krishna
Nhập ngày sinh: 09/26/1989
Ngày sinh hợp lệ
Flag đã dùng (int): 4

Giải thích: Giá trị 4 tương ứng với Pattern.COMMENTS (theo thứ tự bit: 1=CANON_EQ, 2=CASE_INSENSITIVE, 4=COMMENTS, 8=DOTALL, 16=MULTILINE, 32=LITERAL, 64=UNICODE_CASE, 128=UNICODE_CHARACTER_CLASS, 256=UNIX_LINES).