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

การระบุจำนวนครั้งซ้ำ (Quantifiers) แบบเฉพาะเจาะจงใน Python Regex

ใช้ curly braces {n}, {n,}, {n,m} เพื่อระบุจำนวนครั้งที่แน่นอนหรือช่วงของการซ้ำ

ตัวอย่าง: จับคู่ A 3 ตัว ตามด้วย B 4 ตัว

import re
foo = 'AAABBBBBB'
match = re.search(r'A{3}B{4}', foo)
print(match.group())

ผลลัพธ์

AAABBBB

รูปแบบ Quantifiers แบบเจาะจง

รูปแบบความหมายตัวอย่างจับคู่ได้
{n}n ครั้งพอดีA{3} → AAA
{n,}n ครั้งขึ้นไปA{2,} → AA, AAA, AAAA...
{n,m}n ถึง m ครั้งA{2,4} → AA, AAA, AAAA

Greedy vs Lazy

Quantifiers ทำงานแบบ Greedy (จับคู่มากที่สุดเท่าที่จะเป็นไปได้) โดยค่าเริ่มต้น ใช้ ? หลัง quantifier เพื่อทำให้เป็น Lazy (จับคู่น้อยที่สุด)

>> re.findall(r'A{2,4}', 'AAAAA')
['AAAA']  # Greedy: จับ 4 ตัว (มากที่สุดในช่วง 2-4)

>>> re.findall(r'A{2,4}?', 'AAAAA')
['AA', 'AA']  # Lazy: จับ 2 ตัว (น้อยที่สุด) แล้วหาต่อ