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

การจับคู่เฉพาะ Non-digits ใน Python Regex (\D+)

ใช้ \D+ (D พิมพ์ใหญ่ + quantifier +) เพื่อจับคู่ ลำดับอักขระที่ไม่ใช่ตัวเลข 1 ตัวขึ้นไป

ตัวอย่าง: search() - หาครั้งแรก

import re
m = re.search(r'\D+', '5Need47for Speed 2')
print(m)

ผลลัพธ์

<_sre.SRE_Match object at 0x...>

จับคู่ "Need" (non-digit sequence แรกที่เจอ)

ตัวอย่าง: findall() - หาทั้งหมด

import re
m = re.findall(r'\D+', '5Need47for Speed 2')
print(m)

ผลลัพธ์

['Need', 'for Speed ']

คำอธิบาย

  • \D = non-digit character (เทียบเท่า [^0-9])
  • + = 1 ครั้งขึ้นไป (greedy)
  • findall() คืนลิสต์ของทุก non-overlapping matches

เปรียบเทียบ \D+ vs \D

>> re.findall(r'\D', '5Need47for Speed 2')
['N', 'e', 'e', 'd', 'f', 'o', 'r', ' ', 'S', 'p', 'e', 'e', 'd', ' ']

>>> re.findall(r'\D+', '5Need47for Speed 2')
['Need', 'for Speed ']