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

Lớp ký tự POSIX \p{Alpha} trong Java Regex

Lớp ký tự POSIX \p{Alpha} khớp với các chữ cái alphabetic cả chữ hoa và chữ thường: A-Z và a-z. Tương đương [A-Za-z].

Ví dụ 1: Lọc chuỗi chỉ chứa chữ cái

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

public class Example {
    public static void main(String args[]) {
        String regex = "^\\p{Alpha}+$";

        Scanner sc = new Scanner(System.in);
        System.out.println("Nhập 5 chuỗi:");
        String[] input = new String[5];
        for (int i = 0; i < 5; i++) {
            input[i] = sc.nextLine();
        }

        Pattern p = Pattern.compile(regex);
        System.out.println("Chuỗi chỉ chứa chữ cái:");
        for (int i = 0; i < 5; i++) {
            Matcher m = p.matcher(input[i]);
            if (m.matches()) {
                System.out.println(m.group());
            }
        }
    }
}

Kết quả mẫu

Nhập 5 chuỗi:
hello
sample
243test
##$$@
222356

Chuỗi chỉ chứa chữ cái:
hello
sample

Ví dụ 2: Đếm ký tự alphabetic

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

public class Example {
    public static void main(String args[]) {
        System.out.println("Nhập một chuỗi:");
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();

        String regex = "[\\p{Alpha}]";

        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);

        int count = 0;
        while (matcher.find()) {
            count++;
        }
        System.out.println("Số ký tự alphabetic: " + count);
    }
}

Kết quả mẫu

Nhập một chuỗi: sample text
Số ký tự alphabetic: 10

"sample" (6) + "text" (4) = 10. Khoảng trắng không tính.

Lưu ý quan trọng

  • \p{Alpha} chỉ khớp ASCII letters (A-Z, a-z). Không khớp chữ cái có dấu tiếng Việt (à, ả, ã, á, ạ, ă, â, đ, ê, ô, ơ, ư...) hay ký tự non-Latin (Kanji, Hangul, Arabic...).
  • Để khớp chữ cái Unicode (bao gồm tiếng Việt), dùng \p{L} hoặc \p{Letter} với flag Pattern.UNICODE_CHARACTER_CLASS.
  • Trong Java string: "\\p{Alpha}".

Ứng dụng thực tế

  • Validate tên chỉ chứa chữ cái ASCII: ^\\p{Alpha}+$.
  • Validate mã quốc gia ISO 2 chữ cái: ^\\p{Alpha}{2}$.
  • Kiểm tra từ đơn thuần: ^\\p{Alpha}+$.
  • Loại bỏ số và ký tự đặc biệt: input.replaceAll("[^\\p{Alpha}]", "").

So sánh nhanh

ClassKhớpVí dụ khớpVí dụ KHÔNG khớp
\p{Alpha}A-Z, a-za, Z0, @, à, ñ
\p{Lower}a-zaA, 0, à
\p{Upper}A-ZZa, 0, À
\p{Alnum}A-Z, a-z, 0-9a, Z, 5@, à
\p{L} (Unicode)Tất cả chữ cái Unicodea, Z, à, ñ, あ, 한0, @