Nhóm bắt trong chuỗi thay thế trong Python
Khi làm việc với phương thức sub, nếu
cần bắt cái gì đó vào một nhóm trong biểu thức chính quy,
thì trong chuỗi thay thế có thể chèn nội dung của
nhóm đó bằng cách viết dấu gạch chéo kép \
và số thứ tự của nhóm. Ví dụ, \1 -
nhóm đầu tiên, \2 - nhóm thứ hai
và cứ thế.
Tại sao cần điều này và cách sử dụng nó thế nào hãy cùng xem qua các ví dụ.
Ví dụ
Hãy tìm tất cả các số và thay chúng bằng chính các số đó, nhưng đặt trong dấu ngoặc tròn. Để làm điều này, hãy thay thế tất cả các số tìm được bằng chính chúng, nhưng có dấu ngoặc:
txt = '1 23 456 xax'
res = re.sub('(\d+)', '(\1)', txt)
print(res)
Kết quả, biến sẽ được gán giá trị sau:
'(1) (23) (456) xax'
Ví dụ
Hãy tìm tất cả các chuỗi, đại diện cho
các số có chữ 'x' xung quanh và thay thế những
số này bằng chính chúng, nhưng có dấu '!'
xung quanh:
txt = 'x1x x23x x456x xax'
res = re.sub('x(\d+)x', '!\1!', txt)
print(res)
Kết quả, biến sẽ được gán giá trị sau:
'!1! !23! !456! xax'
Ví dụ
Hãy giải bài toán sau: cho một chuỗi
'aaa@bbb ccc@ddd' - các chữ cái, sau đó
dấu @, sau đó các chữ cái. Cần đổi chỗ
các chữ cái trong chuỗi con 'aaa@bbb' ở trước
dấu '@' và sau nó:
txt = 'aaa@bbb ccc@ddd'
res = re.sub('([a-z]+)@([a-z]+)', '\2@\1', txt)
print(res)
Kết quả, biến sẽ được gán giá trị sau:
'bbb@aaa ccc@ddd'
Bài tập thực hành
Cho chuỗi:
txt = '12 34 56 78'
Hãy đổi chỗ các chữ số trong tất cả các số có hai chữ số.
Cho một chuỗi chứa ngày tháng:
txt = '31.12.2025'
Chuyển đổi ngày này thành '2025.12.31'.