Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

Character Class: Negation - นิพจน์ปกติ Java (Regex)

Character Class ใน Java Regex ใช้ [] จับคู่ตัวอักษรตัวเดียวจากชุดที่ระบุ เช่น [abc] จับคู่ a, b, c หรือ [a-z] จับคู่พิมพ์เล็ก a-z

รูปแบบ Negation ใช้ ^ ภายในวงเล็บ [^ ] จับคู่ตัวอักษรที่ ไม่อยู่ ในชุดที่ระบุ เช่น [^abc] จับคู่ตัวอักษรที่ไม่ใช่ a, b, c หรือ [^a-z] จับคู่ตัวอักษรที่ไม่ใช่พิมพ์เล็ก 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("Enter input text: ");
        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("Number of non-vowel characters: " + count);
    }
}

ผลลัพธ์

Enter input text: sample data
Number of non-vowel characters: 7

อธิบาย

  • [^aeiou] จับคู่ทุกตัวอักษร ยกเว้น สระ a, e, i, o, u
  • ใน "sample data": s,m,p,l, (space), d,t = 7 ตัวอักษร
  • สระ a, a, e ไม่นับ

รูปแบบ Negation อื่นๆ

  • [^0-9] - ไม่ใช่ตัวเลข
  • [^a-zA-Z] - ไม่ใช่ตัวอักษรอังกฤษ
  • [^\s] - ไม่ใช่ whitespace (เทียบเท่า \S)

หมายเหตุ

^ ต้องอยู่ ตรงหลัง [ ถึงจะเป็น Negation หากอยู่ตรงกลาง จะถูกตีความเป็นตัวอักษร ^ ธรรมดา