Khái niệm
Lớp ký tự (character class) trong Java regex dùng [] khớp một ký tự từ tập chỉ định. Biến thể Range cho phép dùng dải ký tự.
[a-z]- khớp một ký tự từ a đến z[^A-Z]- khớp ký tự không phải chữ hoa A-Z
Ví dụ 1: Đếm ký tự a-z
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Nhập văn bản: ");
String input = sc.nextLine();
String regex = "[a-z]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
int count = 0;
while (matcher.find()) {
count++;
}
System.out.println("Số ký tự trong phạm vi (a-z): " + count);
}
}
Nhập văn bản: sample data 5423 #@ %*&
Số ký tự trong phạm vi (a-z): 10
Ví dụ 2: Kiểm tra có ký tự không phải chữ hoa
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Nhập văn bản: ");
String input = sc.nextLine();
String regex = "[^A-Z]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
System.out.println("match occurred");
} else {
System.out.println("match not occurred");
}
}
}
Nhập văn bản: sample data
match occurred
Nhập văn bản: SAMPLEDATA
match not occurred
Các Range phổ biến
| Regex | Ý nghĩa |
|---|---|
[0-9] | Chữ số 0-9 |
[A-Z] | Chữ hoa A-Z |
[a-zA-Z] | Chữ cái (cả hai case) |
[a-zA-Z0-9] | Chữ và số (alphanumeric) |