Real Python spiega le regex in Python con esempi pratici
Testo scritto con l’intelligenza artificiale a partire da una fonte citata, senza revisione umana prima della pubblicazione.
Il tutorial mostra re.search(), come importare il modulo re e un esempio per trovare tre cifre consecutive in una stringa.
Tre cifre di fila in una stringa non sono sempre “123”. Con s = "foo123bar", una chiamata a re.search("123", s) trova una corrispondenza e restituisce un oggetto match con span da 3 a 6. Il tutorial di Real Python parte qui, dal bisogno concreto di riconoscere pattern oltre le semplici sottostringhe1.
Prima il ripasso degli strumenti base. L’uguaglianza con == verifica se due stringhe coincidono. L’operatore in controlla se una compare dentro l’altra. I metodi .find() e .index() danno anche la posizione della sottostringa. Funzionano quando cerchi sequenze fisse di caratteri. Crollano quando il requisito cambia, per esempio “qualunque terna di cifre in qualunque punto” come in 'foo123bar', 'foo456bar', '234baz', 'qux678'1.
Qui entrano le espressioni regolari. Una regex è una sequenza di caratteri che descrive un pattern. In Python il modulo re implementa il motore di matching. Il tutorial si concentra su una funzione: re.search(<regex>, <string>). Scansiona la stringa. Alla prima corrispondenza restituisce un oggetto match. Se non trova nulla, restituisce None. La funzione accetta anche un terzo argomento opzionale, flags, illustrato in coda alla lezione1.
Prima di usarla serve l’import. Due vie: import re e poi re.search(...). Oppure from re import search e poi search(...). Gli esempi adottano la prima via. L’istruzione import può non comparire a ogni snippet, ma resta necessaria per far girare il codice1.
Il primo esempio è minimale e utile. Con s = "foo123bar" e re.search("123", s), l’interprete stampa un oggetto <re.Match> con intervallo di caratteri e porzione trovata. Un match è truthy. In un if permette di stampare “Found a match.” quando la corrispondenza esiste. Se re.search non trova nulla, valuta a False1.
La lezione promette un passo ulteriore: i metacaratteri. Servono a costruire pattern complessi. La sintassi richiede pratica. Col tempo diventa uno strumento che usi spesso quando lavori con stringhe in Python1.
C’è anche un breve sfondo storico. Nel 1951 Stephen Cole Kleene formalizza i linguaggi regolari con le espressioni regolari. A metà anni Sessanta Ken Thompson inserisce il pattern matching nell’editor QED usando la notazione di Kleene. Da lì le regex entrano in molti linguaggi e strumenti, inclusi Python, Java, Perl e vari tool Unix ed editor di testo1.
Il tutorial mette ordine anche nel perimetro. Qui si lavora soprattutto con re.search. Il modulo re contiene altre funzioni e metodi. Verranno affrontati nel seguito della serie1.
Chi vuole esercitarsi trova materiale pronto. C’è del codice di esempio scaricabile per provare le funzioni mostrate. È disponibile anche un quiz interattivo sulle regex in Python. Copre il modulo re, le classi di caratteri, gli ancoraggi, i gruppi, l’alternanza e i flag. Al termine assegna un punteggio per misurare i progressi1.
Il dettaglio più pratico resta l’accesso alle informazioni del match. L’oggetto restituito da re.search contiene dati utili oltre alla verità del risultato, come l’intervallo e il testo catturato. Il tutorial annuncia che li esplorerà più avanti. Per chi ha urgenza di applicare subito i concetti, il pacchetto di codice e il quiz offrono una strada rapida per consolidare l’uso di re.search prima di passare agli altri strumenti del modulo re1.
Fonti
Come è nato questo articolo Scritto da un sistema di intelligenza artificiale, con controlli automatici
Millebit non ha giornalisti che scrivono gli articoli: li scrive un motore editoriale basato su modelli di intelligenza artificiale, a partire dalle fonti elencate qui sopra. Prima di uscire, ogni testo passa questi controlli:
- Rilettura. Un passaggio toglie i tic della prosa generata da un modello, come i contrasti costruiti e le frasi che annunciano invece di informare, senza toccare fatti e fonti.
- Fedeltà alle fonti. Un passaggio dedicato toglie ogni affermazione che le fonti non sostengono. Valutazione su questo pezzo: 9,5/10.
- Anti-cliché. Un filtro scarta frasi fatte, enfasi e tic della prosa artificiale: superato.
- Giudizio editoriale. Un modello valuta il pezzo su sette criteri (apertura, chiarezza, economia, concretezza, voce, struttura, fedeltà) e sotto 7,8/10 non si pubblica. Questo articolo ha preso 8,0/10 dopo 1 revisione.
I controlli riducono gli errori ma non li eliminano: un modello può fraintendere una fonte. Per le decisioni importanti, risali alla fonte originale. Se trovi un errore, segnalacelo.
Per vedere Millebit nelle notizie principali di Google, aggiungilo alle tue fonti preferite. Oppure segui l’edizione di oggi, il feed RSS o La Sintesi.