re — espressioni regolari semplici#
Questo modulo implementa le operazioni con le espressioni regolari. La sintassi delle espressioni regolari supportata è un sottoinsieme del modulo re di CPython (e in realtà è un sottoinsieme delle espressioni regolari estese POSIX).
Gli operatori e le sequenze speciali supportati sono:
.Corrisponde a un carattere qualsiasi.
[...]Corrisponde a un insieme di caratteri. Sono supportati sia i singoli caratteri che gli intervalli, inclusi gli insiemi negati (ad esempio
[^a-c]).^Corrisponde all’inizio della stringa.
$Corrisponde alla fine della stringa.
?Corrisponde a zero o una occorrenza del sotto-pattern precedente.
*Corrisponde a zero o più occorrenze del sotto-pattern precedente.
+Corrisponde a una o più occorrenze del sotto-pattern precedente.
??Versione non greedy di
?, corrisponde a zero o una occorrenza, con preferenza per zero.*?Versione non greedy di
*, corrisponde a zero o più occorrenze, con preferenza per la corrispondenza più breve.+?Versione non greedy di
+, corrisponde a una o più occorrenze, con preferenza per la corrispondenza più breve.|Corrisponde al sotto-pattern alla sinistra oppure al sotto-pattern alla destra di questo operatore.
(...)Raggruppamento. Ogni gruppo è di cattura (la sottostringa che cattura può essere ottenuta con il metodo
match.group()).(?:...)Raggruppamento senza cattura. Ogni gruppo viene confrontato usando le stesse regole del raggruppamento normale, ma non farà parte dell’oggetto match.
\dCorrisponde a una cifra. Equivalente a
[0-9].\DCorrisponde a un carattere non numerico. Equivalente a
[^0-9].\sCorrisponde a uno spazio bianco. Equivalente a
[ \t-\r].\SCorrisponde a un carattere non di spaziatura. Equivalente a
[^ \t-\r].\wCorrisponde ai «caratteri di parola» (solo ASCII). Equivalente a
[A-Za-z0-9_].\WCorrisponde ai caratteri che non sono «caratteri di parola» (solo ASCII). Equivalente a
[^A-Za-z0-9_].\Carattere di escape. Qualsiasi altro carattere che segue la barra rovesciata, eccetto quelli elencati sopra, viene interpretato letteralmente. Ad esempio,
\*è equivalente al*letterale (non viene trattato come l’operatore*). Si noti che\r,\n, ecc. non vengono gestiti in modo speciale e saranno equivalenti alle lettere letteralir,n, ecc. Per questo motivo, non è consigliabile usare le stringhe Python raw (r"") per le espressioni regolari. Ad esempio,r"\r\n"quando usato come espressione regolare è equivalente a"rn". Per far corrispondere il carattere CR seguito da LF, usare"\r\n".
NON SUPPORTATO:
ripetizioni con conteggio (
{m,n})gruppi con nome (
(?P<name>...))asserzioni più avanzate (
\b,\B)escape di caratteri speciali come
\r,\n- usare invece l’escaping proprio di Pythonecc.
Esempio:
import re
# As re doesn't support escapes itself, use of r"" strings is not
# recommended.
regex = re.compile("[\r\n]")
regex.split("line1\rline2\nline3\r\n")
# Result:
# ['line1', 'line2', 'line3', '', '']
Funzioni#
- re.compile(regex_str: str, flags: int = 0) 'regex'#
Compila l’espressione regolare e restituisce un oggetto regex.
- re.search(regex_str: str, string: str) 'match | None'#
Compila regex_str e lo cerca in una string. A differenza di
match, questo cerca nella stringa la prima posizione che corrisponde all’espressione regolare (che può comunque essere 0 se l’espressione regolare è ancorata).
- re.sub(regex_str: str, replace: str | Callable, string: str, count: int = 0, flags: int = 0, /) str#
Compila regex_str e lo cerca in string, sostituendo tutte le corrispondenze con replace e restituendo la nuova stringa.
replace può essere una stringa o una funzione. Se è una stringa, è possibile usare sequenze di escape della forma
\<number>e\g<number>per espandersi nel gruppo corrispondente (o in una stringa vuota per i gruppi senza corrispondenza). Se replace è una funzione, deve accettare un singolo argomento (la corrispondenza) e dovrebbe restituire una stringa di sostituzione.Se count è specificato e diverso da zero, la sostituzione si interromperà dopo aver effettuato questo numero di sostituzioni. L’argomento flags viene ignorato.
Oggetti Regex#
Espressione regolare compilata. Le istanze di questa classe vengono create usando re.compile().
- class re.regex
Oggetto espressione regolare compilata restituito da
re.compile().- match(string: str, pos: int = 0, endpos: int | None = None) 'match | None'#
Applica questa espressione regolare compilata a string, ancorata all’inizio della regione di ricerca, e restituisce un oggetto
match, oppureNonese l’espressione regolare non corrisponde. Questo è l’equivalente per pattern compilato delmatcha livello di modulo ed è molto più efficiente quando lo stesso pattern viene applicato a più stringhe.Il parametro opzionale pos indica un indice in string da cui far iniziare la ricerca; il valore predefinito è
0. Questo non è del tutto equivalente all’estrazione di una porzione della stringa; il carattere di pattern'^'corrisponde all’inizio reale della stringa e nelle posizioni immediatamente successive a un a capo, ma non necessariamente all’indice da cui deve iniziare la ricerca.Il parametro opzionale endpos limita fino a dove viene cercata string; sarà come se la stringa fosse lunga endpos caratteri, quindi vengono cercati solo i caratteri da pos a
endpos - 1. Se endpos èNone(il valore predefinito), viene cercata l’intera stringa.
- search(string: str, pos: int = 0, endpos: int | None = None) 'match | None'#
Scorre string cercando la prima posizione in cui questa espressione regolare compilata produce una corrispondenza, e restituisce un oggetto
match, oppureNonese nessuna posizione corrisponde. Questo è l’equivalente per pattern compilato della funzionesearch()a livello di modulo ed è molto più efficiente quando lo stesso pattern viene applicato a più stringhe.Il parametro opzionale pos indica un indice in string da cui far iniziare la ricerca; il valore predefinito è
0. Questo non è del tutto equivalente all’estrazione di una porzione della stringa; il carattere di pattern'^'corrisponde all’inizio reale della stringa e nelle posizioni immediatamente successive a un a capo, ma non necessariamente all’indice da cui deve iniziare la ricerca.Il parametro opzionale endpos limita fino a dove viene cercata string; sarà come se la stringa fosse lunga endpos caratteri, quindi vengono cercati solo i caratteri da pos a
endpos - 1. Se endpos èNone(il valore predefinito), viene cercata l’intera stringa.
- sub(replace: str | Callable, string: str, count: int = 0, flags: int = 0, /) str#
Cerca questa espressione regolare compilata in string, sostituendo tutte le corrispondenze con replace, e restituisce la nuova stringa. Questo è l’equivalente per pattern compilato della funzione
sub()a livello di modulo ed è molto più efficiente quando lo stesso pattern viene applicato a più stringhe.replace può essere una stringa o una funzione. Se è una stringa, è possibile usare sequenze di escape della forma
\<number>e\g<number>per espandersi nel gruppo corrispondente (o in una stringa vuota per i gruppi senza corrispondenza). Se replace è una funzione, deve accettare un singolo argomento (la corrispondenza) e dovrebbe restituire una stringa di sostituzione.Se count è specificato e diverso da zero, la sostituzione si interromperà dopo aver effettuato questo numero di sostituzioni. L’argomento flags viene ignorato.
Oggetti Match#
Un oggetto match contiene il risultato di una corrispondenza riuscita.
- class re.match(regex_str: str, string: str)#
Confronta regex_str con string, ancorato all’inizio della stringa, e restituisce un oggetto match, oppure
Nonese non corrisponde. Questa è la scorciatoia a livello di modulo:re.match(regex_str, string)è equivalente are.compile(regex_str).match(string).Lo stesso oggetto match viene restituito anche da
search(), dai metodi per pattern compilatoregex.match()/regex.search(), e viene passato alla funzione di sostituzione usata dasub().