Lớp ký tự POSIX \p{Graph} khớp với tất cả các ký tự hiển thị được (visible characters): chữ cái, chữ số, dấu câu. Không bao gồm khoảng trắng (space) và các ký tự điều khiển.
Mối quan hệ: \p{Graph} = \p{Print} - [space]
Ví dụ 1: Đếm ký tự hiển thị
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class VisibleCharacters {
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{Graph}]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
int count = 0;
while (matcher.find()) {
count++;
}
System.out.println("Số ký tự hiển thị: " + count);
}
}
Kết quả mẫu 1
Nhập một chuỗi: öäü çã Ã test Số ký tự hiển thị: 4
Chỉ đếm "test" (4 ký tự). Khoảng trắng và các ký tự Unicode Latin-1 Supplement không được tính trong ví dụ này do encoding.
Kết quả mẫu 2
Nhập một chuỗi: welcome to tutorialspoint Số ký tự hiển thị: 23
23 = độ dài chuỗi trừ 2 khoảng trắng.
Ví dụ 2: Lọc chuỗi chỉ chứa ký tự visible
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{Graph}+$";
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 ký tự visible (không space):");
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öäüçãà öäüçãà Hello1234 1234 welcome Chuỗi chỉ chứa ký tự visible: Hello1234 1234 welcome
Lưu ý
\p{Graph}=[\p{Alnum}\p{Punct}](alphanumeric + punctuation).- Khác với
\p{Print}: loại bỏ space. - Trong Java string:
"\\p{Graph}". - Tương tự ví dụ trước, các ký tự Unicode mở rộng có thể không khớp tùy locale/JVM.
Ứng dụng
- Validate mật khẩu không chứa khoảng trắng:
^\p{Graph}{8,}$ - Kiểm tra token/chuỗi không có whitespace.
- Phân tích văn bản loại bỏ space.