Character Classes ใน Java Regex ใช้วงเล็บสี่เหลี่ยม [] จับคู่ตัวอักษรตัวเดียวจากชุดที่ระบุ เช่น [abc] จับคู่ a, b, c หรือ [a-z] จับคู่พิมพ์เล็ก a-z
รูปแบบต่างๆ ของ Character Classes
1. Negation (ปฏิเสธ) - [^...]
ใช้ ^ ภายในวงเล็บ จับคู่ตัวอักษรที่ ไม่อยู่ ในชุด
[^abc]- ไม่ใช่ a, b, c[^a-z]- ไม่ใช่พิมพ์เล็ก a-z
2. Range (ช่วง) - [a-z]
ใช้ไฮเฟน - ระบุช่วง
[a-z]- พิมพ์เล็ก a ถึง z[^A-Z]- ไม่ใช่พิมพ์ใหญ่ (Negation + Range)
3. Union (ยูเนียน) - [a-z[0-9]]
รวมช่วงหลายช่วงด้วยการซ้อนวงเล็บ จับคู่ตัวอักษรจาก ช่วงใดช่วงหนึ่ง
[a-z[0-9]]- พิมพ์เล็ก a-z หรือ ตัวเลข 0-9
4. Intersection (อินเตอร์เซ็กชัน) - [a-z&&[r-u]]
จับคู่ตัวอักษรที่ อยู่ในทั้งสองช่วง ใช้ &&
[a-z&&[r-u]]- ตัวอักษรที่เป็นพิมพ์เล็ก และ อยู่ใน r-u → r, s, t, u
5. Subtraction (ลบช่วง) - [a-l&&[^e-h]]
ลบช่วงหนึ่งออกจากอีกช่วง ใช้ Negation + Intersection
[a-l&&[^e-h]]- a ถึง l ลบ e ถึง h ออก → a, b, c, d, i, j, k, l
ตารางสรุป
| ประเภท | Syntax | ตัวอย่าง | จับคู่ |
|---|---|---|---|
| Basic | [abc] | ตัวอักษรเดี่ยว | a, b, c |
| Range | [a-z] | ช่วง | a-z |
| Negation | [^abc] | ยกเว้น | ยกเว้น a,b,c |
| Union | [a-z[0-9]] | รวม (OR) | a-z หรือ 0-9 |
| Intersection | [a-z&&[r-u]] | ร่วม (AND) | r, s, t, u |
| Subtraction | [a-l&&[^e-h]] | ลบช่วง | a-d, i-l |