Xử lý nhiều dòng trong biểu thức chính quy Python
Biểu thức chính quy khi làm việc với chuỗi nhiều dòng có những đặc điểm riêng. Hãy cùng tìm hiểu chúng thông qua ví dụ về chuỗi sau, chứa các ký tự thông thường, ký tự xuống dòng và tab:
txt = '''111
222
333
444'''
Ký tự xuống dòng
Ký tự xuống dòng có thể được bắt bằng
lệnh '\n':
res = re.sub('\n', '!', txt)
print(res)
Kết quả sẽ xuất ra chuỗi sau (khoảng trống giữa các dòng là tab):
'111! 222! 333! 444'
Tab
Ký tự tab có thể được bắt bằng
lệnh '\t':
res = re.sub('\t', '!', txt)
print(res)
Kết quả thực thi mã:
'''
!111
!222
!333
!444
'''
Hoạt động của dấu chấm
Lệnh '.' đối với chuỗi nhiều dòng
không bắt ký tự xuống dòng:
res = re.sub('.', '!', txt)
print(res)
Kết quả thực thi mã:
'''
!!!
!!!!
!!!!
!!!!
'''
Bất kỳ ký tự nào
Để bắt tất cả các ký tự trong chuỗi nhiều dòng,
người ta sử dụng một thủ thuật khéo léo là
kết hợp [\s\S]. Cấu trúc như vậy
sẽ tìm thấy tất cả các ký tự thông thường và tất cả các ký tự xuống dòng:
res = re.sub('[\s\S]', '!', txt)
print(res)
Kết quả thực thi mã:
'!!!!!!!!!!!!!!!!!!'
Dollar
Lệnh '
trong chế độ nhiều dòng
sẽ bắt cuối mỗi dòng:
res = re.sub('
', '!', txt)
print(res)
Kết quả thực thi mã:
'''
111!
222!
333!
444!
'''
Bài tập thực hành
Cho chuỗi:
'''
abc
def
ghi
jkl
'''
Viết biểu thức chính quy biến chuỗi này thành:
'''
abc!
def!
ghi!
jkl!
'''
Cho chuỗi:
'''
abc
def
ghi
jkl
'''
Viết biểu thức chính quy biến chuỗi này thành:
'''
! abc
! def
! ghi
! jkl
'''
Cho chuỗi:
'''
abc
def
ghi
jkl
'''
Viết biểu thức chính quy biến chuỗi này thành:
'''!
abc
def
ghi
jkl
!'''
Cho chuỗi:
'''
abc
def
ghi
jkl
'''
Viết biểu thức chính quy biến chuỗi này thành:
'''!
! abc
! def
! ghi
! jkl
!'''
Cho chuỗi:
'''
abc
def
ghi
jkl
'''
Viết biểu thức chính quy biến chuỗi này thành:
'''!
abc!
def!
ghi!
jkl!
!'''
Cho chuỗi:
'''
abc
def
ghi
jkl
'''
Viết biểu thức chính quy biến chuỗi này thành:
'''
!abc
!def
!ghi
!jkl
'''