Espressioni regolari Python semplificate
Le espressioni regolari (regex) sono potenti strumenti utilizzati per confrontare e manipolare stringhe in base a pattern. In Python, il modulo re
fornisce supporto per le espressioni regolari, consentendo di eseguire in modo efficiente complesse operazioni sulle stringhe. Questo articolo ti introdurrà alle basi delle espressioni regolari e ti mostrerà come utilizzarle in modo efficace in Python.
Introduzione al modulo re
Per usare le espressioni regolari in Python, devi importare il modulo re
. Questo modulo fornisce diverse funzioni per lavorare con i pattern regex:
re.match()
- Controlla la corrispondenza solo all'inizio della stringa.re.search()
- Cerca una corrispondenza nell'intera stringa.re.findall()
- Trova tutte le corrispondenze nella stringa e le restituisce come un elenco.re.sub()
- Sostituisce le corrispondenze nella stringa con una sostituzione specificata.
Corrispondenza di modelli di base
Le espressioni regolari utilizzano caratteri speciali per definire i pattern di ricerca. Ecco alcuni pattern di base:
.
- Corrisponde a qualsiasi singolo carattere, eccetto la nuova riga.\d
- Corrisponde a qualsiasi cifra (equivalente a[0-9]
).\w
- Corrisponde a qualsiasi carattere alfanumerico (equivalente a[a-zA-Z0-9_]
).\s
- Corrisponde a qualsiasi carattere di spazio vuoto.^
- Corrisponde all'inizio della stringa.$
- Corrisponde alla fine della stringa.
Esempi
Ecco alcuni esempi che dimostrano il pattern matching di base:
import re
# Match a pattern at the beginning of a string
result = re.match(r'Hello', 'Hello, World!')
print(result.group()) # Output: Hello
# Search for a pattern in the entire string
result = re.search(r'\d+', 'There are 24 hours in a day.')
print(result.group()) # Output: 24
Utilizzo di espressioni regolari con gruppi
I gruppi vengono utilizzati per catturare parti del testo corrispondente. Sono definiti tramite parentesi. Ad esempio, per estrarre parti specifiche di un pattern, puoi utilizzare i gruppi:
pattern = r'(\d{3})-(\d{2})-(\d{4})'
text = 'My number is 123-45-6789.'
# Find all matches with groups
match = re.search(pattern, text)
if match:
print(f'Area Code: {match.group(1)}') # Output: 123
print(f'Prefix: {match.group(2)}') # Output: 45
print(f'Suffix: {match.group(3)}') # Output: 6789
Utilizzo di caratteri speciali
Le espressioni regolari includono diversi caratteri speciali per corrispondenze di pattern più complesse:
*
- Corrisponde a 0 o più occorrenze dell'elemento precedente.+
- Corrisponde a 1 o più occorrenze dell'elemento precedente.?
- Corrisponde a 0 o 1 occorrenza dell'elemento precedente.{n}
- Corrisponde esattamente an
occorrenze dell'elemento precedente.|
- Corrisponde al pattern precedente o a quello successivo.
Esempi
Ecco alcuni esempi che utilizzano caratteri speciali:
# Match a pattern with 0 or more occurrences
result = re.findall(r'\d*', '123 abc 456')
print(result) # Output: ['123', '', '', '456']
# Match a pattern with 1 or more occurrences
result = re.findall(r'\d+', 'There are 24 apples and 3 oranges.')
print(result) # Output: ['24', '3']
Sostituzione del testo con espressioni regolari
La funzione re.sub()
viene utilizzata per sostituire parti della stringa che corrispondono a un pattern:
text = 'The rain in Spain falls mainly in the plain.'
# Replace 'Spain' with 'France'
new_text = re.sub(r'Spain', 'France', text)
print(new_text) # Output: The rain in France falls mainly in the plain.
Conclusione
Le espressioni regolari sono uno strumento potente per il pattern matching e la manipolazione del testo in Python. Con il modulo re
, puoi cercare, abbinare e sostituire il testo in base a pattern complessi. Grazie alla comprensione della sintassi di base e dei caratteri speciali, puoi sfruttare le espressioni regolari per gestire efficacemente un'ampia gamma di attività di elaborazione del testo.