Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Lớp ký tự Negation trong Java Regular Expressions


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.