Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Các trường hợp lặp (repetition) trong regex Python: + * ?

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ẻ