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 flagPattern.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
| Class | Khớp | Ví dụ khớp | Ví dụ KHÔNG khớp |
|---|---|---|---|
\p{Alpha} | A-Z, a-z | a, Z | 0, @, à, ñ |
\p{Lower} | a-z | a | A, 0, à |
\p{Upper} | A-Z | Z | a, 0, À |
\p{Alnum} | A-Z, a-z, 0-9 | a, Z, 5 | @, à |
\p{L} (Unicode) | Tất cả chữ cái Unicode | a, Z, à, ñ, あ, 한 | 0, @ |