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 หากอยู่ตรงกลาง จะถูกตีความเป็นตัวอักษร ^ ธรรมดา