Gruppi di cattura e gruppi denominati
Parentesi per la cattura, gruppi denominati (?P ...), re.fullmatch(), lookahead e lookbehind.
Gruppi di cattura e gruppi denominati è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 3 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.
Perché usare i gruppi?
I gruppi consentono di isolare parti di una corrispondenza, così può estrarre esattamente la parte desiderata: il prefisso telefonico da un numero, l'anno da una data o il nome utente da un indirizzo email.
Questa lezione tratta i gruppi di cattura, i gruppi denominati, i gruppi non catturanti e i lookaround.
Gruppi di cattura con ( )
Racchiuda parte di un pattern tra parentesi per catturarla. L'intera corrispondenza e ogni gruppo diventano accessibili nell'oggetto Match.
import re
m = re.search("(\d{4})-(\d{2})-(\d{2})", "Date: 2026-05-29")
print(m.group()) # "2026-05-29" (whole match)
print(m.group(1)) # "2026"
print(m.group(2)) # "05"match.group, groups, groupdict
Accessor utili:
m.group(0)— l'intera corrispondenzam.group(n)— l'ennesima catturam.groups()— una tupla contenente tutte le catture
import re
m = re.search("(\d{4})-(\d{2})-(\d{2})", "2026-05-29")
print(m.groups()) # ("2026", "05", "29")
year, month, day = m.groups()Gruppi denominati con (?P<name>...)
La numerazione dei gruppi può diventare fragile. I gruppi denominati utilizzano (?P<name>...), così può fare riferimento alle catture tramite un nome significativo.
import re
m = re.search("(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})", "2026-05-29")
print(m.group("year")) # "2026"
print(m.group("month")) # "05"groupdict per un output strutturato
m.groupdict() restituisce tutti i gruppi denominati sotto forma di dizionario: è perfetto per trasformare il testo corrispondente in record strutturati.
import re
m = re.search("(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})", "2026-05-29")
print(m.groupdict())
# {"year": "2026", "month": "05", "day": "29"}Gruppi non catturanti (?:...)
A volte servono le parentesi solo per raggruppare, ad esempio per applicare un quantificatore, ma NON si desidera effettuare una cattura. Utilizzi (?:...).
In questo modo la numerazione dei gruppi rimane ordinata.
import re
# Group "ab" so + applies, but do not capture it
m = re.search("(?:ab)+(\d+)", "ababab42")
print(m.group(1)) # "42" -> group 1 is the digits, not "ab"Riferimenti all'indietro
Un riferimento all'indietro \1 corrisponde allo stesso testo catturato in precedenza da un gruppo. È utile per trovare parole ripetute.
import re
# Find a word repeated twice in a row
print(re.findall("(\w+) \1", "the the cat cat sat"))
# ["the", "cat"]Lookahead (?=...)
Un lookahead positivo (?=...) verifica ciò che deve seguire, senza consumarlo. Il testo verificato non fa parte del match.
Qui troviamo un numero solo se è seguito da "px".
import re
print(re.findall("\d+(?=px)", "10px 20em 30px"))
# ["10", "30"] -> "20" skipped (not followed by px)Lookahead negativo (?!...)
Un lookahead negativo (?!...) verifica ciò che NON deve seguire. Troviamo il numero solo se NON è seguito da "px".
import re
print(re.findall("\d+(?!px)", "10px 20em 30px"))
# matches numbers not followed directly by pxLookbehind (?<=...) e (?<!...)
Il lookbehind verifica ciò che viene prima del match, senza consumarlo:
(?<=...)positivo — deve essere preceduto da(?<!...)negativo — NON deve essere preceduto da
Qui estraiamo gli importi preceduti dal simbolo del dollaro, senza catturare il simbolo.
import re
print(re.findall("(?<=\$)\d+", "price $50 and 60 units"))
# ["50"] -> only the amount after $Combinare gruppi e lookaround
Gli estrattori reali combinano questi strumenti. Questo pattern estrae un prezzo con nome, che deve essere preceduto da un simbolo di valuta e seguito da una parte decimale:
import re
text = "Total: $1299.99 paid"
m = re.search("(?<=\$)(?P<amount>\d+)\.(?P<cents>\d{2})", text)
print(m.group("amount"), m.group("cents")) # 1299 99Verifica rapida: gruppi con nome
Desidera estrarre i match usando un nome leggibile come "year" invece di un numero.
Riepilogo: gruppi e lookaround
Ora può estrarre una struttura precisa dal testo:
( )gruppi di cattura conm.group(n)em.groups()(?P<name>...)gruppi con nome conm.groupdict()(?:...)gruppi non catturanti per raggruppare in modo ordinato- Backreference
\1per le ripetizioni - Lookahead
(?=)/(?!)e lookbehind(?<=)/(?<!)
Prossimo argomento: unire tutto per pulire il testo destinato all'IA.
Domande Frequenti
La lezione «Gruppi di cattura e gruppi denominati» è gratuita?
Sì — il testo completo di «Gruppi di cattura e gruppi denominati» è 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 «Gruppi di cattura e gruppi denominati»?
Parentesi per la cattura, gruppi denominati (?P ...), re.fullmatch(), lookahead e lookbehind. 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 3 di 4.
Quanto tempo richiede la lezione «Gruppi di cattura e gruppi denominati»?
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