Các toán tử lặp lại ký tự trong biểu thức chính quy
Có những tình huống cần chỉ định rằng một
ký tự lặp lại một số lần nhất định.
Nếu số lần lặp chính xác không biết,
có thể đơn giản viết nó nhiều lần
- 'aaaa'. Nhưng phải làm sao nếu cần
nói điều này: lặp lại một hoặc nhiều
lần?
Để làm điều này, có các toán tử (bộ định lượng)
lặp lại: dấu cộng + (một hoặc nhiều
lần), dấu sao * (không hoặc nhiều
lần) và dấu hỏi ? (không hoặc một lần).
Các toán tử này tác động lên ký tự
đứng trước chúng.
Hãy xem cách hoạt động của các toán tử này qua các ví dụ.
Ví dụ
Tìm tất cả các chuỗi con theo mẫu chữ cái
'x', chữ cái 'a' một hoặc nhiều
lần, chữ cái 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa+x', '!', txt)
print(res)
Kết quả thực thi mã:
'xx ! ! ! xbx'
Ví dụ
Tìm tất cả các chuỗi con theo mẫu chữ cái
'x', chữ cái 'a' không hoặc nhiều
lần, chữ cái 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa*x', '!', txt)
print(res)
Kết quả thực thi mã:
'! ! ! ! xbx'
Ví dụ
Tìm tất cả các chuỗi con theo mẫu chữ cái
'x', chữ cái 'a' không hoặc một
lần, chữ cái 'x':
txt = 'xx xax xaax xbx'
res = re.sub('xa?x', '!', txt)
print(res)
Kết quả thực thi mã:
'! ! xaax xbx'
Bài tập thực hành
Cho chuỗi:
txt = 'aa aba abba abbba abca abea'
Viết biểu thức chính quy tìm các chuỗi
'aba', 'abba', 'abbba'
theo mẫu: chữ cái 'a', chữ cái
'b' bất kỳ số lần, chữ cái
'a'.
Cho chuỗi:
txt = 'aa aba abba abbba abca abea'
Viết biểu thức chính quy tìm các chuỗi
'aa', 'aba', 'abba',
'abbba' theo mẫu: chữ cái
'a', chữ cái 'b' bất kỳ số lần
(kể cả không lần nào), chữ cái
'a'.
Cho chuỗi:
txt = 'aa aba abba abbba abca abea'
Viết biểu thức chính quy tìm các chuỗi
'aa', 'aba' theo mẫu:
chữ cái 'a', chữ cái 'b' một
lần hoặc không, chữ cái 'a'.
Cho chuỗi:
txt = 'aa aba abba abbba abca abea'
Viết biểu thức chính quy tìm các chuỗi
'aa', 'aba', 'abba',
'abbba', mà không bắt 'abca'
và 'abea'.