Il comando 'o' nelle espressioni regolari di Python
Il comando '|', che rappresenta
una versione più potente di 'o'
rispetto al comando [ ]. Questo comando
consente di dividere l'espressione regolare in diverse
parti. In questo caso, la corrispondenza può rientrare
in una parte dell'espressione regolare, oppure in
un'altra. Vediamo degli esempi.
Esempio
In questo esempio, il modello di ricerca è il seguente:
tre lettere 'a' o tre lettere
'b':
txt = 'aaa bbb abb'
res = re.sub('a{3}|b{3}', '!', txt)
print(res)
Risultato dell'esecuzione del codice:
'! ! abb'
Esempio
In questo esempio, il modello di ricerca è il seguente:
tre lettere 'a' o da 1 o
più lettere 'b':
txt = 'aaa bbb bbbb bbbbb axx'
res = re.sub('a{3}|b+', '!', txt)
print(res)
Risultato dell'esecuzione del codice:
'! ! ! ! axx'
Esempio
In questo esempio, il modello di ricerca è il seguente: una o più lettere o tre cifre:
txt = 'a ab abc 1 12 123'
res = re.sub('[a-z]+|\d{3}', '!', txt)
print(res)
Risultato dell'esecuzione del codice:
'! ! ! 1 12 !'
Esempio
Il carattere verticale può dividere l'espressione regolare non in due parti, ma in un numero qualsiasi di parti:
txt = 'aaa bbb ccc ddd'
res = re.sub('a+|b+|c+', '!', txt)
print(res)
Risultato dell'esecuzione del codice:
'! ! ! ddd'
Esempio
Se il carattere verticale si trova all'interno di parentesi
tonde, allora 'o' funziona solo
all'interno di quelle parentesi.
Ad esempio, troviamo le stringhe secondo
il seguente modello: all'inizio c'è o
'a', o 'b' una o più
volte, e poi due lettere 'x':
txt = 'axx bxx bbxx exx'
res = re.sub('(a|b+)xx', '!', txt)
print(res)
Risultato dell'esecuzione del codice:
'! ! ! exx'
Problemi pratici
Data una stringa:
txt = 'aeeea aeea aea axa axxa axxxa'
Scrivi un'espressione regolare che trovi le stringhe
secondo il modello: ai lati ci sono le lettere
'a', e tra di loro - o la lettera
'e' un numero qualsiasi di volte o la lettera
'x' un numero qualsiasi di volte.
Data una stringa:
txt = 'aeeea aeea aea axa axxa axxxa'
Scrivi un'espressione regolare che trovi le stringhe
secondo il modello: ai lati ci sono le lettere
'a', e tra di loro - o la lettera
'e' due volte o la lettera 'x'
un numero qualsiasi di volte.