0Pricing
Learn AI with Python · Lezione

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 first

re.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())   # 6

re.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"))    # None

search vs match

La differenza fondamentale è la seguente:

  • match — il pattern deve iniziare all'indice 0
  • search — 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 minuscole
  • re.MULTILINE — ^/$ corrispondono a ogni riga
  • re.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'inizio
  • re.findall — elenco di tutte le corrispondenze (i gruppi ne modificano l'output)
  • re.finditer — oggetti Match con le posizioni
  • re.sub — sostituisce le corrispondenze, con backreference o una funzione
  • re.compile e 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

  1. Pattern regex e classi di caratteri
  2. Modulo re: search, match, findall, sub
  3. Gruppi di cattura e gruppi denominati
  4. Pulizia del testo per l’IA con le regex
← Torna a Learn AI with Python