ใช้ 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 ตัว (น้อยที่สุด) แล้วหาต่อ