bitlvl
IT

Scheda regex

La sintassi condivisa da ogni motore principale, con le differenze in una tabella alla fine.

Sta in una pagina A4 / Letter verticale; usa «Salva come PDF» nella finestra di stampa per conservarne una copia.

Ancore e confini

^ $inizio / fine del testo (della riga con il flag m)
\A \z \Zinizio / fine del testo a prescindere dai flag (non in JS)
\b \Bconfine di parola / non confine

Caratteri

.qualsiasi carattere tranne l’a capo (qualsiasi con il flag s)
\d \w \scifra, carattere di parola, spazio bianco; \D \W \S negano
[abc] [a-z] [^abc]insieme, intervallo, insieme negato
[\]\\^-]dentro un insieme solo ] \ ^ - richiedono l’escape
\t \n \r \xHH \uHHHHtab, a capo, CR, hex, Unicode
\p{L} \p{Lu} \p{N} \p{Script=Cyrillic}proprietà Unicode (flag u in JS)
[[:alpha:]] [[:digit:]]classi POSIX (grep, PCRE; non JS)
\. \* \( \\metacarattere con escape = letterale

Quantificatori

* + ?0+, 1+, 0 o 1
{n} {n,} {n,m}esattamente, almeno, tra
*? +? ?? {n,m}?pigri: il meno possibile
*+ ++ ?+possessivi: nessun backtracking (PCRE, Java)

Gruppi

(abc)cattura, numerata da 1
(?:abc)senza cattura
(?<nome>abc)con nome (Python: (?P<nome>…))
\1 \k<nome>riferimento all’indietro (Python: (?P=nome))
a|balternativa (precedenza più bassa)
(?>abc)gruppo atomico (PCRE, Java)
(?i)abc (?i:abc)flag inline, flag inline con ambito

Lookaround (larghezza zero)

(?=x)seguito da x
(?!x)non seguito da x
(?<=x)preceduto da x
(?<!x)non preceduto da x

Flag

gtutte le corrispondenze (JS, PHP tramite funzione)
iignora maiuscole/minuscole
m^ $ corrispondono agli a capo
s. corrisponde all’a capo (DOTALL)
xignora spazi e commenti # nel pattern (PCRE, Python; non JS)
uUnicode (JS); necessario per \p{}
ysticky (JS)

Sostituzione

$1 $<nome> $&JS, .NET: gruppo, con nome, intera corrispondenza
\1 \g<nome>Python re.sub
$1 \1 ${nome}PCRE / PHP preg_replace; Go usa $1 e ${nome}
sed 's/(a)(b)/\2\1/'sed -E (il sed di base richiede \( \))

Pattern comuni

^\s*$riga vuota
\s+$spazi finali
\b(?:\d{1,3}\.){3}\d{1,3}\bIPv4 (approssimativo)
[\w.+-]+@[\w-]+(?:\.[\w-]+)+email (pratico)
https?://[^\s"'<>]+URL
\d{4}-\d{2}-\d{2}data ISO
#(?:[0-9a-fA-F]{3}){1,2}\bcolore hex
"(?:[^"\\]|\\.)*"stringa tra doppi apici con escape
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}$password con cifra, minuscola, maiuscola, 8+
(\w+)\s+\1parola ripetuta

Differenze tra varianti

JavaScriptniente \A \z, niente flag x, niente possessivi/atomici; lookbehind sì; gruppi con nome (?<n>)
PCRE (PHP, nginx, HAProxy)tutto; delimitatori /…/ in PHP
Python re(?P<n>), niente possessivi prima della 3.11, \Z = fine
Go RE2, Rust regextempo lineare; niente lookaround, niente riferimenti all’indietro
grep -E / sed -EERE: niente \d (usa [0-9]), classi POSIX, niente quantificatori pigri
grep (di base)\( \) \{ \} \+ \? con escape per essere speciali
Javapossessivi, atomici; le stringhe richiedono doppi backslash

I risultati e i messaggi di questo strumento sono mostrati in inglese.

Domande

Dove posso provare un pattern?

Il tester di regex evidenzia le corrispondenze in tempo reale, elenca i gruppi, mostra un’anteprima della sostituzione e spiega il pattern token per token.