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:
txt = '''111
222
333
444'''
Nuova riga
I caratteri di nuova riga possono essere catturati
usando il comando '\n':
res = re.sub('\n', '!', txt)
print(res)
Il risultato sarà la seguente stringa (gli spazi tra le righe sono tabulazioni):
'111! 222! 333! 444'
Tabulazione
I caratteri di tabulazione possono essere catturati
usando il comando '\t':
res = re.sub('\t', '!', txt)
print(res)
Risultato dell'esecuzione del codice:
'''
!111
!222
!333
!444
'''
Comportamento del punto
Il comando '.' per una stringa multiriga
non cattura i caratteri di nuova riga:
res = re.sub('.', '!', txt)
print(res)
Risultato dell'esecuzione del codice:
'''
!!!
!!!!
!!!!
!!!!
'''
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:
res = re.sub('[\s\S]', '!', txt)
print(res)
Risultato dell'esecuzione del codice:
'!!!!!!!!!!!!!!!!!!'
Dollaro
Il comando '
in modalità multiriga
catturerà la fine di ogni riga:
res = re.sub('
', '!', txt)
print(res)
Risultato dell'esecuzione del codice:
'''
111!
222!
333!
444!
'''
Problemi pratici
Data la stringa:
'''
abc
def
ghi
jkl
'''
Scrivi un'espressione regolare che trasformi questa stringa nella seguente:
'''
abc!
def!
ghi!
jkl!
'''
Data la stringa:
'''
abc
def
ghi
jkl
'''
Scrivi un'espressione regolare che trasformi questa stringa nella seguente:
'''
! abc
! def
! ghi
! jkl
'''
Data la stringa:
'''
abc
def
ghi
jkl
'''
Scrivi un'espressione regolare che trasformi questa stringa nella seguente:
'''!
abc
def
ghi
jkl
!'''
Data la stringa:
'''
abc
def
ghi
jkl
'''
Scrivi un'espressione regolare che trasformi questa stringa nella seguente:
'''!
! abc
! def
! ghi
! jkl
!'''
Data la stringa:
'''
abc
def
ghi
jkl
'''
Scrivi un'espressione regolare che trasformi questa stringa nella seguente:
'''!
abc!
def!
ghi!
jkl!
!'''
Data la stringa:
'''
abc
def
ghi
jkl
'''
Scrivi un'espressione regolare che trasformi questa stringa nella seguente:
'''
!abc
!def
!ghi
!jkl
'''