Lệnh 'hoặc' trong biểu thức chính quy Python
Lệnh '|', đại diện cho
một biến thể mạnh mẽ hơn của 'hoặc'
so với lệnh [ ]. Lệnh này
cho phép chia biểu thức chính quy thành nhiều
phần. Khi đó, chuỗi tìm kiếm có thể khớp
với một phần của biểu thức chính quy, hoặc
phần khác. Hãy cùng xem các ví dụ.
Ví dụ
Trong ví dụ này, mẫu tìm kiếm như sau:
ba chữ 'a' hoặc ba chữ
'b':
txt = 'aaa bbb abb'
res = re.sub('a{3}|b{3}', '!', txt)
print(res)
Kết quả thực thi mã:
'! ! abb'
Ví dụ
Trong ví dụ này, mẫu tìm kiếm như sau:
ba chữ 'a' hoặc từ 1
chữ 'b' trở lên:
txt = 'aaa bbb bbbb bbbbb axx'
res = re.sub('a{3}|b+', '!', txt)
print(res)
Kết quả thực thi mã:
'! ! ! ! axx'
Ví dụ
Trong ví dụ này, mẫu tìm kiếm như sau: một hoặc nhiều chữ cái hoặc ba chữ số:
txt = 'a ab abc 1 12 123'
res = re.sub('[a-z]+|\d{3}', '!', txt)
print(res)
Kết quả thực thi mã:
'! ! ! 1 12 !'
Ví dụ
Dấu sổ dọc có thể chia biểu thức chính quy thành không chỉ hai phần, mà thành bất kỳ số lượng phần nào:
txt = 'aaa bbb ccc ddd'
res = re.sub('a+|b+|c+', '!', txt)
print(res)
Kết quả thực thi mã:
'! ! ! ddd'
Ví dụ
Nếu dấu sổ dọc nằm bên trong dấu ngoặc tròn,
thì 'hoặc' chỉ hoạt động
bên trong những dấu ngoặc đó.
Lấy ví dụ, hãy tìm các chuỗi theo
mẫu sau: ở đầu là
'a', hoặc 'b' một hoặc nhiều
lần, sau đó là hai chữ 'x':
txt = 'axx bxx bbxx exx'
res = re.sub('(a|b+)xx', '!', txt)
print(res)
Kết quả thực thi mã:
'! ! ! exx'
Bài tập thực hành
Cho chuỗi:
txt = 'aeeea aeea aea axa axxa axxxa'
Viết biểu thức chính quy tìm các chuỗi
theo mẫu: hai bên là các chữ cái
'a', và giữa chúng - hoặc là chữ cái
'e' với số lần bất kỳ hoặc chữ cái
'x' với số lần bất kỳ.
Cho chuỗi:
txt = 'aeeea aeea aea axa axxa axxxa'
Viết biểu thức chính quy tìm các chuỗi
theo mẫu: hai bên là các chữ cái
'a', và giữa chúng - hoặc là chữ cái
'e' hai lần hoặc chữ cái 'x'
với số lần bất kỳ.