Khái niệm
Lớp ký tự (character class) trong Java regex được định nghĩa bằng cặp ngoặc vuông [], khớp với một ký tự đơn từ tập hợp chỉ định. Ví dụ: [abc] khớp a, b hoặc c.
Biến thể Union cho phép khớp ký tự từ một trong các phạm vi chỉ định. Biểu thức [a-z[0-9]] khớp một ký tự là chữ thường (a-z) hoặc chữ số (0-9).
Ví dụ
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[0-9]]";
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 hoặc 0-9): " + count);
}
}
Kết quả
Nhập văn bản: sample DATA 12345
Số ký tự trong phạm vi (a-z hoặc 0-9): 11
Giải thích
sample(6 ký tự thường) +12345(5 chữ số) = 11 khớp.DATA(chữ hoa) không khớp vì regex chỉ chứa a-z và 0-9.
Các biến thể Union khác
[a-f[0-3]]- chữ cái a-f hoặc số 0-3[A-Z[a-z]]- chữ hoa hoặc chữ thường (tương đương[A-Za-z])