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 a n 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.