Lớp ký tự (character class) \p{javaLowerCase} khớp với các chữ cái viết thường. Lớp này khớp các ký tự trả về true khi truyền vào phương thức isLowerCase() của lớp java.lang.Character.
Ví dụ 1: Đếm số ký tự viết thường
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample {
public static void main(String args[]) {
// Đọc chuỗi từ người dùng
System.out.println("Nhập một chuỗi:");
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
// Biểu thức chính quy
String regex = "[\\p{javaLowerCase}]";
// Biên dịch regex
Pattern pattern = Pattern.compile(regex);
// Lấy đối tượng Matcher
Matcher matcher = pattern.matcher(input);
int count = 0;
while (matcher.find()) {
count++;
}
System.out.println("Số ký tự viết thường: " + count);
}
}
Kết quả mẫu
Nhập một chuỗi: This IS A sample TExt Số ký tự viết thường: 11
Ví dụ 2: Lọc chuỗi chỉ chứa chữ thường
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String args[]) {
// Regex khớp chuỗi CHỈ chứa chữ thường (1 hoặc nhiều)
String regex = "^\\p{javaLowerCase}+$";
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ữ thường:");
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: Raju RAMU rahman radha SUnDar* Chuỗi chỉ chứa chữ thường: rahman radha
Lưu ý
\p{javaLowerCase}dựa trên Unicode, hỗ trợ nhiều ngôn ngữ không chỉ ASCII (ví dụ: chữ cái tiếng Việt có dấu viết thường nhưà, ẻ, ơ...cũng khớp).- Khác với
[a-z]chỉ khớp ASCII a-z. - Để dùng trong chuỗi Java, cần escape backslash:
"\\p{javaLowerCase}".