Modulo re: search, match, findall, sub
re.search(), re.match(), re.findall(), re.sub(), re.compile() per migliorare le prestazioni.
Modulo re: search, match, findall, sub è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.
Il modulo re
Python espone le regex tramite il modulo integrato re. Le funzioni principali sono search, match, findall e sub.
Sapere quale utilizzare è già metà del lavoro.
import re # always import it firstre.search — Trovare ovunque
re.search(pattern, text) analizza l'intera stringa alla ricerca della prima corrispondenza e restituisce un oggetto Match, oppure None se non trova corrispondenze.
import re
m = re.search("\d+", "order 42 shipped")
if m:
print(m.group()) # "42"
print(m.start()) # 6re.match — Ancorato all'inizio
re.match trova corrispondenze solo all'inizio della stringa. Se il pattern non si trova in posizione 0, restituisce None anche se compare più avanti.
import re
print(re.match("\d+", "42 items")) # matches "42"
print(re.match("\d+", "items 42")) # Nonesearch vs match
La differenza fondamentale è la seguente:
match— il pattern deve iniziare all'indice 0search— il pattern può comparire ovunque
Nella maggior parte dei casi vorrà utilizzare search. Utilizzi match solo quando le serve specificamente un controllo del prefisso.
re.findall — Ottenere tutte le corrispondenze
re.findall restituisce un elenco di tutte le corrispondenze non sovrapposte sotto forma di stringhe, non di oggetti Match. È ideale per le attività di estrazione.
import re
emails = re.findall("\w+@\w+\.\w+", "a@x.com and b@y.org")
print(emails) # ["a@x.com", "b@y.org"]findall con i gruppi
Se il pattern contiene gruppi di cattura, findall restituisce le parti catturate invece dell'intera corrispondenza: una sorpresa piuttosto comune.
Qui ogni tupla contiene il prefisso e il resto del numero.
import re
print(re.findall("(\d{3})-(\d{4})", "555-1234 and 999-8765"))
# [("555", "1234"), ("999", "8765")]re.finditer — Oggetti Match
Quando ha bisogno delle posizioni o dei gruppi per ogni corrispondenza, utilizzi re.finditer. Restituisce oggetti Match che può scorrere in modo lazy.
import re
for m in re.finditer("\d+", "a1 b22 c333"):
print(m.group(), "at", m.start())re.sub — Cercare e sostituire
re.sub(pattern, replacement, text) sostituisce ogni corrispondenza con la stringa sostitutiva e restituisce una nuova stringa.
È fondamentale per la pulizia del testo: mascheramento, normalizzazione e rimozione.
import re
clean = re.sub("\d+", "#", "Room 101 and 202")
print(clean) # "Room # and #"sub con riferimenti all'indietro e funzioni
La sostituzione può fare riferimento ai gruppi catturati con \1, oppure può essere una funzione per applicare una logica dinamica.
import re
# Swap "first last" -> "last, first"
print(re.sub("(\w+) (\w+)", "\\2, \\1", "Ada Lovelace"))
# Function replacement: double each number
print(re.sub("\d+", lambda m: str(int(m.group()) * 2), "a1 b2"))re.compile — Riutilizzare i pattern
Quando utilizza più volte un pattern, ad esempio in un ciclo, re.compile lo trasforma una sola volta in un oggetto pattern riutilizzabile. È più veloce e rende il codice più leggibile.
import re
num = re.compile("\d+")
for line in ["a1", "b22", "c333"]:
print(num.findall(line))Flag utili
I flag modificano il comportamento della ricerca:
re.IGNORECASE— non distingue tra maiuscole e minuscolere.MULTILINE—^/$corrispondono a ogni rigare.DOTALL—.corrisponde anche agli a capo
import re
print(re.findall("cat", "Cat CAT cat", re.IGNORECASE))
# ["Cat", "CAT", "cat"]Verifica rapida: search vs findall
Ha bisogno di un elenco di tutti i numeri di telefono presenti in qualsiasi punto di un documento.
Riepilogo: il modulo re
Ora conosce le principali funzioni per le regex:
re.search— prima corrispondenza ovunque (oggetto Match)re.match— corrispondenza solo all'iniziore.findall— elenco di tutte le corrispondenze (i gruppi ne modificano l'output)re.finditer— oggetti Match con le posizionire.sub— sostituisce le corrispondenze, con backreference o una funzionere.compilee i flag per il riutilizzo e il controllo
Prossimo argomento: gruppi di cattura e gruppi denominati.
Domande Frequenti
La lezione «Modulo re: search, match, findall, sub» è gratuita?
Sì — il testo completo di «Modulo re: search, match, findall, sub» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.
Cosa imparerò in «Modulo re: search, match, findall, sub»?
re.search(), re.match(), re.findall(), re.sub(), re.compile() per migliorare le prestazioni. Eserciti Learn AI with Python con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Learn AI with Python?
Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Modulo re: search, match, findall, sub»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Learn AI with Python?
Sì. Ogni lezione Learn AI with Python include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Pattern regex e classi di caratteri
- Modulo re: search, match, findall, sub
- Gruppi di cattura e gruppi denominati
- Pulizia del testo per l’IA con le regex