Le espressioni regolari (conosciute anche come regex) sono uno strumento potente per la manipolazione di stringhe e la ricerca di testo. Python, attraverso la sua libreria standard re, offre una vasta gamma di funzioni per lavorare con espressioni regolari. Ecco una guida completa con esempi su come utilizzarle.
Indice dei contenuti
La Libreria per le espressioni regolari con Python
La libreria re è inclusa in Python, quindi non c’è bisogno di installarla separatamente. Per utilizzarla, è sufficiente importarla nel tuo script.
import re
Funzioni Base della Libreria re
- re.match() – Determina se l’espressione regolare corrisponde all’inizio della stringa.
- re.search() – Ricerca un match dell’espressione regolare in tutta la stringa.
- re.findall() – Restituisce tutti i match dell’espressione regolare in una lista.
- re.finditer() – Restituisce un iteratore che produce i match dell’espressione regolare.
- re.sub() – Sostituisce le occorrenze dell’espressione regolare.
Le Regex per azioni specifiche su Python
Di seguito vediamo alcune espressioni regolari semplici che potrebbero essere utilizzate spesso con Python.
Ricerca di una Parola in una Stringa
Per cercare una parola all’interno di una stringa, possiamo utilizzare il metodo re.search().
testo = "Benvenuti nel mondo di Python" risultato = re.search("mondo", testo) if risultato: print("Trovato!") else: print("Non trovato!")
Trovare Tutte le Occorrenze
Per trovare tutte le occorrenze di una parola in una stringa, utilizziamo re.findall().
testo = "Python è fantastico, Python è semplice" occorrenze = re.findall("Python", testo) print(occorrenze)
Sostituzione di Stringhe
Per sostituire una parte del testo con un’altra stringa, utilizziamo re.sub().
testo = "Python è complicato" nuovo_testo = re.sub("complicato", "semplice", testo) print(nuovo_testo)
Regex per azioni più avanzate in Python
Dopo aver esplorato le basi delle espressioni regolari in Python attraverso la libreria re, è il momento di passare a esempi più complessi. Questi esempi ti mostreranno come utilizzare le regex per risolvere problemi specifici e più avanzati.
Validazione di un Indirizzo Email
Un’applicazione tipica delle espressioni regolari è la validazione di indirizzi email. Ecco un esempio che utilizza re.match():
pattern = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}" email = "esempio@email.com" if re.match(pattern, email): print("Email valida") else: print("Email non valida")
Estrazione di URL da un Testo
Supponiamo di avere un testo contenente diversi URL e di volerli estrarre. Possiamo usare re.findall() per questo scopo.
pattern = r"https?://[^\s]+" testo = "Visita https://www.esempio.com o http://blog.esempio.com" urls = re.findall(pattern, testo) print(urls)
Suddivisione di una Stringa con Separatori Multipli
A volte, potremmo voler dividere una stringa utilizzando più di un separatore. Utilizziamo re.split() per farlo.
pattern = r"[,;\s]" testo = "mela,banana;mela banana" frutti = re.split(pattern, testo) print(frutti)
Cercare e Sostituire con Gruppi di Cattura
Possiamo utilizzare i gruppi di cattura nelle espressioni regolari per individuare e sostituire specifici gruppi di caratteri all’interno di una stringa.
pattern = r"(\d{2})/(\d{2})/(\d{4})" testo = "La data è 23/08/2021" nuovo_testo = re.sub(pattern, r"\3-\2-\1", testo) print(nuovo_testo)