Multiriga nelle espressioni regolari di Python

Le espressioni regolari quando lavorano con stringhe multiriga hanno le loro peculiarità. Analizziamole attraverso l'esempio della seguente stringa, contenente caratteri ordinari, caratteri di nuova riga e tabulazioni:

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

Nuova riga

I caratteri di nuova riga possono essere catturati usando il comando '\n':

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

Il risultato sarà la seguente stringa (gli spazi tra le righe sono tabulazioni):

python'111!  222!  333!  444'

Tabulazione

I caratteri di tabulazione possono essere catturati usando il comando '\t':

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

Risultato dell'esecuzione del codice:

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

Comportamento del punto

Il comando '.' per una stringa multiriga non cattura i caratteri di nuova riga:

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

Risultato dell'esecuzione del codice:

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

Qualsiasi carattere

Per catturare tutti i caratteri in una stringa multiriga, si usa un espediente intelligente sotto forma della combinazione [\s\S]. Questa costruzione troverà tutti i caratteri ordinari e tutti i ritorni a capo:

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

Risultato dell'esecuzione del codice:

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

Dollaro

Il comando ' in modalità multiriga catturerà la fine di ogni riga:

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

Risultato dell'esecuzione del codice:

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

Problemi pratici

Задание 1

Data la stringa:

python'''
  abc
  def
  ghi
  jkl
'''

Scrivi un'espressione regolare che trasformi questa stringa nella seguente:

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

Data la stringa:

python'''
  abc
  def
  ghi
  jkl
'''

Scrivi un'espressione regolare che trasformi questa stringa nella seguente:

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

Data la stringa:

python'''
  abc
  def
  ghi
  jkl
'''

Scrivi un'espressione regolare che trasformi questa stringa nella seguente:

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

Data la stringa:

python'''
  abc
  def
  ghi
  jkl
'''

Scrivi un'espressione regolare che trasformi questa stringa nella seguente:

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

Data la stringa:

python'''
  abc
  def
  ghi
  jkl
'''

Scrivi un'espressione regolare che trasformi questa stringa nella seguente:

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

Data la stringa:

python'''
  abc
  def
  ghi
  jkl
'''

Scrivi un'espressione regolare che trasformi questa stringa nella seguente:

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