Quantifier chỉ định số lần lặp của pattern bên trái:
| Ký hiệu | Ý nghĩa |
|---|---|
+ | 1 hoặc nhiều lần |
* | 0 hoặc nhiều lần |
? | 0 hoặc 1 lần (tùy chọn) |
{m} | Đúng m lần |
{m,n} | Từ m đến n lần |
{m,} | Tối thiểu m lần |
Ví dụ: he+ (1 hoặc nhiều 'e')
import re s = "sheeeeeeeeple" match = re.search(r"he+", s) print(match.group()) # heeeeeeee
Chế độ tham lam (greedy) vs lười biếng (lazy)
Mặc định quantifier là greedy (khớp nhiều nhất có thể). Thêm ? sau quantifier để làm lazy (khớp ít nhất):
*?,+?,??,{m,n}?
>>> re.findall(r'<.*>', ' ') [' '] # greedy: khớp từ < đầu đến > cuối >>> re.findall(r'<.*?>', ' ') ['', ''] # lazy: khớp từng thẻ