Parentesi graffe nelle espressioni regolari Python
Gli operatori '+', '*', '?'
sono utili, tuttavia, con il loro aiuto non è possibile specificare
un numero esatto di ripetizioni. In questo caso
viene in vostro aiuto l'operatore {}.
Funziona nel modo seguente: {5}
- cinque ripetizioni, {2,5} – si ripete
da due a cinque volte (entrambi inclusi), {2,}
- si ripete due o più volte. Guardate gli
esempi:
Esempio
In questo esempio il modello di ricerca è
il seguente: lettera 'x', lettera 'a'
una o due volte, lettera 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{1,2}x', '!', txt)
print(res)
Risultato dell'esecuzione del codice:
'xx ! ! xaaax'
Esempio
In questo esempio il modello di ricerca è
il seguente: lettera 'x', lettera 'a'
due volte o più, lettera 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{2,}x', '!', txt)
print(res)
Risultato dell'esecuzione del codice:
'xx xax ! !'
Esempio
In questo esempio il modello di ricerca è
il seguente: lettera 'x', lettera 'a'
tre volte, lettera 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{3}x', '!', txt)
print(res)
Risultato dell'esecuzione del codice:
'xx xax xaax !'
Esempio
In questo esempio il modello di ricerca è
il seguente: lettera 'a' dieci volte:
txt = 'aaa aaaaaaaaaa aaa'
res = re.sub('a{10}', '!', txt)
print(res)
Risultato dell'esecuzione del codice:
'aaa ! aaa'
Esempio
In questo esempio c'è un modello come: lettera
'x', lettera 'a' tre volte o meno,
lettera 'x'. Per realizzarlo,
prima del numero 3
non è necessario indicare un numero, ma si può mettere
semplicemente una virgola:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{,3}x', '!', txt)
print(res)
Risultato dell'esecuzione del codice:
'! ! ! !'
Esempio
Anche lo zero prima di 3 è consentito:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{0,3}x', '!', txt)
print(res)
Risultato dell'esecuzione del codice:
'! ! ! !'
Problemi pratici
Data la stringa:
txt = 'aa aba abba abbba abbbba abbbbba'
Scrivi un'espressione regolare che trovi le stringhe
'abba', 'abbba', 'abbbba'
e solo quelle.
Data la stringa:
txt = 'aa aba abba abbba abbbba abbbbba'
Scrivi un'espressione regolare che trovi le stringhe
del tipo 'aba', in cui 'b'
appare meno di 3 volte (incluso).
Data la stringa:
txt = 'aa aba abba abbba abbbba abbbbba'
Scrivi un'espressione regolare che trovi le stringhe
del tipo 'aba', in cui 'b'
appare più di 4 volte (incluso).