developer reference

Regex cheat sheet

Reference pratica per usare Regex tutti i giorni con ricerca, copia comando e stampa PDF. Finalmente un sito che non ti obbliga a scavare in dieci tab aperti.

Vai ai comandi
35
comandi
7
categorie
0
dipendenze

Tester regex live

JS RegExp

Il tester usa JavaScript RegExp con ricerca globale (g). Per i gruppi nominati usa (?<name>...). La sintassi e i flag Python re mostrati sotto funzionano in Python, non in questo tester. Limiti: 100.000 caratteri di testo, 4.000 nel pattern, 1.000 match; i pattern lenti vengono interrotti.

Output match

35 comandi visibili

Anchor

4 comandi
^

Inizio riga/stringa

Anchorsicuro
Esempio pratico
^Hello  # match "Hello world" ma non "say Hello"
$

Fine riga/stringa

Anchorsicuro
Esempio pratico
world$  # match "Hello world" ma non "world class"
\b

Word boundary: confine parola/non-parola

Anchorsicuro
Esempio pratico
\bcat\b  # "cat" ma non "catch" o "concat"
\B

Non-word boundary

Anchorsicuro
Esempio pratico
\Bcat\B  # "concatenate" ma non " cat "

Quantificatori

5 comandi
*

0 o più volte (greedy)

Quantificatorisicuro
Esempio pratico
ab*c  # "ac", "abc", "abbc", "abbbc"...
+

1 o più volte (greedy)

Quantificatorisicuro
Esempio pratico
ab+c  # "abc", "abbc" ma NON "ac"
?

0 o 1 volta (opzionale)

Quantificatorisicuro
Esempio pratico
colou?r  # "color" e "colour"
{n,m}

Tra n e m volte

Quantificatorisicuro
Esempio pratico
\d{2,4}  # 2, 3 o 4 cifre
\d{3}    # esattamente 3 cifre
*? +? ??

Versioni lazy (non-greedy)

Quantificatorisicuro
Esempio pratico
# input: "<b>bold</b>"
<.+>   # greedy: "<b>bold</b>"
<.+?>  # lazy: "<b>" poi "</b>"

Classi

5 comandi
[abc]

Character class: uno tra i caratteri elencati

Classisicuro
Esempio pratico
[aeiou]  # qualsiasi vocale
[a-z]  # a-z minuscolo
[A-Za-z0-9]
[^abc]

Negazione: qualsiasi carattere esclusi quelli elencati

Classisicuro
Esempio pratico
[^0-9]  # non cifre
\d \w \s

Shorthand: \d cifra, \w parola, \s spazio

Classisicuro
Esempio pratico
\d  # [0-9]
\w  # [a-zA-Z0-9_]
\s  # [ \t\n\r]
\D \W \S

Negazioni degli shorthand

Classisicuro
Esempio pratico
\D  # non cifra
\W  # non parola
\S  # non spazio
.

Qualsiasi carattere tranne i terminatori di riga; il flag s (Python re.S) include i ritorni a capo

Classisicuro
Esempio pratico
a.b  # "aXb", "a b", "a1b"...

Gruppi

6 comandi
(...)

Gruppo catturante: cattura il match

Gruppisicuro
Esempio pratico
(\d{4})-(\d{2})-(\d{2})
# match "2024-01-15", group(1)="2024"
(?:...)

Gruppo non catturante: raggruppa senza catturare

Gruppisicuro
Esempio pratico
(?:Mr|Mrs|Ms)\.\s\w+
# raggruppa alternative senza catturarle
(?<name>...)

Named group: cattura con nome

Gruppisicuro
Esempio pratico
JavaScript: (?<year>\d{4})-(?<month>\d{2})
match.groups.year

Python: (?P<year>\d{4})-(?P<month>\d{2})
m.group("year")
a|b

Alternativa: a oppure b

Gruppisicuro
Esempio pratico
cat|dog  # "cat" o "dog"
(https?|ftp)://
(?=...) (?!...)

Lookahead positivo e negativo

Gruppisicuro
Esempio pratico
\d+(?= euro)  # numero seguito da " euro" (non cattura " euro")
\d+(?! euro)  # numero NON seguito da " euro"
(?<=...) (?<!...)

Lookbehind positivo e negativo

Gruppisicuro
Esempio pratico
(?<=\$)\d+  # numero preceduto da "$"

Python re

6 comandi
re.search (pattern, string)

Trova prima occorrenza in qualunque posizione

Python resicuro
Esempio pratico
import re
m = re.search(r"\d+", "abc 123 def")
if m:
    print(m.group())  # "123"
re.match (pattern, string)

Match solo all'inizio della stringa

Python resicuro
Esempio pratico
re.match(r"\d+", "123abc")  # match
re.match(r"\d+", "abc123")  # None
re.findall (pattern, string)

Restituisce lista di tutti i match

Python resicuro
Esempio pratico
re.findall(r"\d+", "1 apple, 2 bananas, 3 pears")
# → ["1", "2", "3"]
re.sub (pattern, repl, string)

Sostituisce match con repl

Python resicuro
Esempio pratico
re.sub(r"\s+", " ", "too  many   spaces")
# → "too many spaces"
re.sub(r"(\w+)", r"[\1]", "hello world")
# → "[hello] [world]" (backreference)
re.split (pattern, string)

Splitta stringa sui match del pattern

Python resicuro
Esempio pratico
re.split(r"[,;\s]+", "a, b; c  d")
# → ["a", "b", "c", "d"]
re.compile (pattern, flags)

Precompila pattern per uso ripetuto

Python resicuro
Esempio pratico
EMAIL = re.compile(r"[\w.+-]+@[\w-]+\.[\w.]+")
for line in lines:
    if EMAIL.search(line): ...

Flag

4 comandi
re.IGNORECASE

Case-insensitive matching

Flagsicuro
Esempio pratico
re.findall(r"hello", text, re.I)
re.compile(r"hello", re.IGNORECASE)
re.MULTILINE

^ e $ matchano inizio/fine di ogni riga

Flagsicuro
Esempio pratico
re.findall(r"^\w+", text, re.M)
re.DOTALL

Il punto (.) matcha anche newline

Flagsicuro
Esempio pratico
re.search(r"<div>.+?</div>", html, re.S)
re.VERBOSE

Permette commenti nel pattern (re.X)

Flagsicuro
Esempio pratico
pattern = re.compile(r"""
    \d{4}  # anno
    -
    \d{2}  # mese
""", re.X)

Pattern pronti

5 comandi

Email

[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}

Pattern semplificato per email; non è un validatore completo

Pattern prontisicuro
Esempio pratico
[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}

URL

https?://[\w/:%#$&?()~.=+\-]+

Pattern semplificato per URL HTTP/HTTPS; non è un parser completo

Pattern prontisicuro
Esempio pratico
https?://[\w/:%#$&?()~.=+\-]+

IPv4

\b(?:\d{1,3}\.){3}\d{1,3}\b

Pattern con forma IPv4; non verifica gli intervalli degli ottetti (0–255)

Pattern prontisicuro
Esempio pratico
\b(?:\d{1,3}\.){3}\d{1,3}\b

Data ISO

\b\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])\b

Pattern con forma YYYY-MM-DD; non verifica la validità della data

Pattern prontisicuro
Esempio pratico
\b\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])\b

Numero telefono IT

(?:\+39)?[\s-]?(?:0\d{1,4}|3\d{2})[\s-]?\d{6,8}

Pattern semplificato per telefoni italiani; non conferma che il numero sia valido o assegnato

Pattern prontisicuro
Esempio pratico
(?:\+39)?[\s-]?(?:0\d{1,4}|3\d{2})[\s-]?\d{6,8}

Come usare questa cheat sheet Regex

Posso provare qui le espressioni regolari Python?

Il tester usa JavaScript RegExp. Sintassi Python come (?P<name>...) e re.VERBOSE vanno provate in Python. I pattern pronti illustrano formati, non una validazione completa.

Posso stampare la scheda in PDF?

Usa Stampa PDF. La versione stampabile include tutti i comandi e gli esempi pratici, anche nelle sezioni nascoste dalla ricerca.

Posso usarla in locale?

Sì. Servi i file statici con un server HTTP locale. Ricerca, filtri e copia funzionano nel browser; il tester Regex richiede un contesto HTTP con worker abilitati.