Khái niệm
Biến thể Negation của character class định nghĩa bằng [^ ] (dấu ^ bên trong ngoặc vuông), khớp một ký tự không thuộc tập chỉ định.
[^abc]- khớp mọi ký tự trừ a, b, c[^a-z]- khớp ký tự không phải chữ thường a-z
Ví dụ: Đếm ký tự không phải nguyên âm
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 = "[^aeiou]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
int count = 0;
while (matcher.find()) {
count++;
}
System.out.println("Số ký tự không phải nguyên âm: " + count);
}
}
Kết quả
Nhập văn bản: sample data
Số ký tự không phải nguyên âm: 7
Giải thích
Chuỗi sample data có 10 ký tự (bỏ qua khoảng trắng). Nguyên âm: a, a, e, a = 4. Ký tự còn lại: s, m, p, l, d, t = 6 + 1 khoảng trắng = 7.
Lưu ý
^ở đầu trong[]nghĩa là phủ định. Nếu^ở ngoài[](như^abc) thì khớp đầu chuỗi.- Kết hợp với range:
[^a-zA-Z]khớp ký tự không phải chữ cái.