Multilineitate în expresiile regulate Python

Expresiile regulate atunci când lucrează cu șiruri multiline au particularitățile lor. Să le examinăm pe exemplul următorului șir, care conține caractere obișnuite, caractere de newline și tabulare:

pythontxt = '''111
  222
  333
  444'''

Newline

Caracterele de newline pot fi prinse cu ajutorul comenzii '\n':

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

În rezultat va fi afișat următorul șir (spațiile dintre șiruri sunt tabulări):

python'111!  222!  333!  444'

Tabulare

Caracterele de tabulare pot fi prinse cu ajutorul comenzii '\t':

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

Rezultatul executării codului:

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

Funcționarea punctului

Comanda '.' pentru un șir multiline nu prinde caracterele de newline:

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

Rezultatul executării codului:

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

Orice caracter

Pentru a prinde toate caracterele dintr-un șir multiline, se folosește o construcție specială sub forma [\s\S]. Această construcție va găsi toate caracterele obișnuite și toate newline-urile:

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

Rezultatul executării codului:

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

Dolar

Comanda '$' în modul multiline va prinde sfârșitul fiecărui rând:

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

Rezultatul executării codului:

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

Probleme practice

Задание 1

Este dat șirul:

python'''
  abc
  def
  ghi
  jkl
'''

Scrieți o expresie regulată care va transforma acest șir în următorul:

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

Este dat șirul:

python'''
  abc
  def
  ghi
  jkl
'''

Scrieți o expresie regulată care va transforma acest șir în următorul:

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

Este dat șirul:

python'''
  abc
  def
  ghi
  jkl
'''

Scrieți o expresie regulată care va transforma acest șir în următorul:

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

Este dat șirul:

python'''
  abc
  def
  ghi
  jkl
'''

Scrieți o expresie regulată care va transforma acest șir în următorul:

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

Este dat șirul:

python'''
  abc
  def
  ghi
  jkl
'''

Scrieți o expresie regulată care va transforma acest șir în următorul:

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

Este dat șirul:

python'''
  abc
  def
  ghi
  jkl
'''

Scrieți o expresie regulată care va transforma acest șir în următorul:

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