Python Regex: corrispondenza dei modelli con il modulo re

Padroneggia le espressioni regolari (Regex) in Python. Impara a cercare, abbinare, dividere e sostituire i dati delle stringhe utilizzando la libreria re integrata.

Prova nell'editor

Panoramica

Le espressioni regolari (spesso abbreviate in regex) sono un mini-linguaggio utilizzato per la ricerca avanzata di testo, la corrispondenza di stringhe e la manipolazione. Invece di controllare semplici valori di stringa, regex ti consente di definire modelli complessi da cercare all'interno di enormi corpi di testo. Ad esempio, trovare tutti gli indirizzi email, i numeri di telefono o gli URL in un documento è semplice da esprimere in regex, ma incredibilmente complesso da scrivere utilizzando i normali metodi di stringa.

Python fornisce il supporto integrato per le espressioni regolari tramite il modulo `re`. Il modulo include funzioni critiche come `re.search()` per trovare la prima corrispondenza, `re.findall()` per recuperare tutte le sottostringhe corrispondenti come elenco e `re.finditer()` per scorrere gli oggetti della corrispondenza. Ogni oggetto match fornisce metadati, come l'indice esatto della posizione iniziale e finale della sottostringa corrispondente e il testo corrispondente stesso.

I modelli regex utilizzano metacaratteri speciali: `\d` corrisponde a qualsiasi cifra, `\w` corrisponde a caratteri alfanumerici, `+` corrisponde a una o più ripetizioni e le parentesi `[...]` definiscono i set di caratteri. Il raggruppamento con parentesi `(...)` consente di estrarre parti specifiche di un modello. Inoltre, `re.sub()` ti consente di cercare un modello e sostituirlo con una nuova stringa. Sebbene l'espressione regolare abbia una curva di apprendimento ripida, padroneggiarla ti fornisce uno strumento incredibilmente veloce e versatile per l'elaborazione del testo.

Codice e output di esecuzione

Utilizzo del modulo re per convalidare ed estrarre componenti di un indirizzo email.

regex_demo.py
Prova nell'editor
import re

text = "Contact support at info@pyrun.xyz or developer@pyrun.xyz today."

# Pattern to match email addresses
email_pattern = r"([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})"

# Find all matches
emails = re.findall(email_pattern, text)
print("Emails found:")
for user, domain in emails:
    print(f"User: {user} | Domain: {domain}")

# Redacting emails using re.sub
redacted_text = re.sub(email_pattern, "[REDACTED]", text)
print(f"\nRedacted Text:\n{redacted_text}")
Uscita terminale
Emails found:
User: info | Domain: pyrun.xyz
User: developer | Domain: pyrun.xyz

Redacted Text:
Contact support at [REDACTED] or [REDACTED] today.

Implementazione passo dopo passo

  • Convalida degli input di formato (e-mail, telefoni, password)
  • Analisi dei registri di accesso al server per i codici di stato
  • Estrazione di informazioni da HTML non elaborato e report di ribasso

Domande frequenti

Qual è il significato del prefisso "r" nei modelli regex?

Denota una "corda grezza". Le stringhe non elaborate trattano le barre rovesciate (\) come caratteri letterali invece che come caratteri di escape, evitando conflitti di sintassi con i caratteri jolly regex.

Qual è la differenza tra re.match e re.search?

re.match controlla solo una corrispondenza che inizia proprio all'inizio della stringa, mentre re.search scansiona l'intera stringa per trovare una corrispondenza.

Argomenti correlati

Risorse Python consigliate

Espandi le tue conoscenze con tutorial interattivi, foglietti illustrativi e confronti di codici correlati.