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:

pythontxt = '''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':

pythonres = 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):

python'111!  222!  333!  444'

Tab

Ký tự tab có thể được bắt bằng lệnh '\t':

pythonres = re.sub('\t', '!', txt)
print(res)

Kết quả thực thi mã:

python'''
!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:

pythonres = re.sub('.', '!', txt)
print(res)

Kết quả thực thi mã:

python'''
  !!!
  !!!!
  !!!!
  !!!!
'''

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:

pythonres = re.sub('[\s\S]', '!', txt)
print(res)

Kết quả thực thi mã:

python'!!!!!!!!!!!!!!!!!!'

Dollar

Lệnh ' trong chế độ nhiều dòng sẽ bắt cuối mỗi dòng:

pythonres = re.sub('
', '!', txt)
print(res)

Kết quả thực thi mã:

python'''
  111!
  222!
  333!
  444!
'''

Bài tập thực hành

Задание 1

Cho chuỗi:

python'''
  abc
  def
  ghi
  jkl
'''

Viết biểu thức chính quy biến chuỗi này thành:

python'''
  abc!
  def!
  ghi!
  jkl!
'''
Задание 2

Cho chuỗi:

python'''
  abc
  def
  ghi
  jkl
'''

Viết biểu thức chính quy biến chuỗi này thành:

python'''
!  abc
!  def
!  ghi
!  jkl
'''
Задание 3

Cho chuỗi:

python'''
  abc
  def
  ghi
  jkl
'''

Viết biểu thức chính quy biến chuỗi này thành:

python'''!
  abc
  def
  ghi
  jkl
!'''
Задание 4

Cho chuỗi:

python'''
  abc
  def
  ghi
  jkl
'''

Viết biểu thức chính quy biến chuỗi này thành:

python'''!
!  abc
!  def
!  ghi
!  jkl
!'''
Задание 5

Cho chuỗi:

python'''
  abc
  def
  ghi
  jkl
'''

Viết biểu thức chính quy biến chuỗi này thành:

python'''!
  abc!
  def!
  ghi!
  jkl!
!'''
Задание 6

Cho chuỗi:

python'''
  abc
  def
  ghi
  jkl
'''

Viết biểu thức chính quy biến chuỗi này thành:

python'''
  !abc
  !def
  !ghi
  !jkl
'''