ใช้ \W (W พิมพ์ใหญ่) เพื่อจับคู่ Non-word character เพียงตัวเดียว คือ อักขระที่ ไม่ใช่ ตัวอักษร ตัวเลข หรือ underscore (_)
เทียบเท่า: [^a-zA-Z0-9_] หรือ [^\w]
ตัวอย่าง
import re s = 'ab5z8d*$&Y@' regx = re.compile(r'\W') result = regx.findall(s) print(result)
ผลลัพธ์
['*', '$', '&', '@']
คำอธิบาย
- สตริง:
a b 5 z 8 d * $ & Y @ - Word characters: a, b, 5, z, 8, d, Y
- Non-word characters: *, $, &, @
สรุป \w vs \W
| Pattern | ความหมาย | ชุดอักขระ (ASCII) |
|---|---|---|
\w | Word character | [a-zA-Z0-9_] |
\W | Non-word character | [^a-zA-Z0-9_] |
\w+ | Word 1+ ตัว | hello, var_1, ABC123 |
\W+ | Non-word 1+ ตัว | !@#, , --- |
หมายเหตุ Unicode: ใน Python 3 \w และ \W รองรับ Unicode โดยค่าเริ่มต้น (รวมตัวอักษรไทย, จีน, อารบิก ฯลฯ) ใช้ re.ASCII flag เพื่อจำกัดให้ ASCII เท่านั้น