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

การจับคู่ Non-word Characters ใน Python Regex (\W)

ใช้ \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)
\wWord character[a-zA-Z0-9_]
\WNon-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 เท่านั้น