Dấu ngoặc nhọn trong biểu thức chính quy Python
Các toán tử '+', '*', '?'
rất tốt, tuy nhiên, chúng không thể chỉ định
một số lần lặp cụ thể. Trong trường hợp này,
toán tử {} sẽ giúp bạn.
Nó hoạt động như sau: {5}
- năm lần lặp, {2,5} – lặp lại
từ hai đến năm lần (bao gồm cả hai), {2,}
- lặp lại hai lần trở lên. Hãy xem
các ví dụ:
Ví dụ
Trong ví dụ này, mẫu tìm kiếm trông
như sau: chữ cái 'x', chữ cái 'a'
một hoặc hai lần, chữ cái 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{1,2}x', '!', txt)
print(res)
Kết quả thực thi mã:
'xx ! ! xaaax'
Ví dụ
Trong ví dụ này, mẫu tìm kiếm trông
như sau: chữ cái 'x', chữ cái 'a'
hai lần trở lên, chữ cái 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{2,}x', '!', txt)
print(res)
Kết quả thực thi mã:
'xx xax ! !'
Ví dụ
Trong ví dụ này, mẫu tìm kiếm trông
như sau: chữ cái 'x', chữ cái 'a'
ba lần, chữ cái 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{3}x', '!', txt)
print(res)
Kết quả thực thi mã:
'xx xax xaax !'
Ví dụ
Trong ví dụ này, mẫu tìm kiếm trông
như sau: chữ cái 'a' mười lần:
txt = 'aaa aaaaaaaaaa aaa'
res = re.sub('a{10}', '!', txt)
print(res)
Kết quả thực thi mã:
'aaa ! aaa'
Ví dụ
Trong ví dụ này có mẫu như sau: chữ cái
'x', chữ cái 'a' ba lần trở xuống,
chữ cái 'x'. Để
thực hiện nó, trước số 3
có thể không chỉ định số, mà chỉ cần đặt
dấu phẩy:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{,3}x', '!', txt)
print(res)
Kết quả thực thi mã:
'! ! ! !'
Ví dụ
Số không trước 3 cũng được chấp nhận:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{0,3}x', '!', txt)
print(res)
Kết quả thực thi mã:
'! ! ! !'
Bài tập thực hành
Cho chuỗi:
txt = 'aa aba abba abbba abbbba abbbbba'
Viết biểu thức chính quy tìm các chuỗi
'abba', 'abbba', 'abbbba'
và chỉ chúng.
Cho chuỗi:
txt = 'aa aba abba abbba abbbba abbbbba'
Viết biểu thức chính quy tìm các chuỗi
dạng 'aba', trong đó 'b'
xuất hiện ít hơn 3 lần (bao gồm).
Cho chuỗi:
txt = 'aa aba abba abbba abbbba abbbbba'
Viết biểu thức chính quy tìm các chuỗi
dạng 'aba', trong đó 'b'
xuất hiện nhiều hơn 4 lần (bao gồm).