Skip to main content

Espressioni Regolari

Un'espressione regolare è una sequenza speciale di caratteri che consente di trovare o abbinare altre stringhe o serie di stringhe, utilizzando una sintassi specializzata contenuta in uno schema.

Esempi di espressioni regolari (Regex)

Un semplice esempio di espressione regolare è una stringa (letterale). Ad esempio, la regex Hello World corrisponde alla stringa "Hello World". . (punto) è un altro esempio di espressione regolare. Un punto corrisponde a qualsiasi singolo carattere; corrisponderebbe, ad esempio, a "a" o "1".

Le tabelle seguenti elencano diverse espressioni regolari e descrivono il pattern a cui corrispondono.

Regex Matches

this is text

Corrisponde esattamente a "this is text"

this\s+is\s+text

Corrisponde alla parola "this" seguita da uno o più spazi bianchi, seguita dalla parola "is", seguita da uno o più spazi bianchi, seguita dalla parola "text"

^\d+(\.\d+)?

^ indica che il pattern deve iniziare all'inizio di una nuova riga. \d+ corrisponde a una o più cifre. Il ? rende la parte tra parentesi opzionale. \. corrisponde a un punto. Le parentesi sono usate per il raggruppamento. Corrisponde per esempio a "5", "1.5" e "2.21".

 

 

Simboli corrispondenti comuni

Espressione Regolare Descrizione

.

Corrisponde a qualsiasi carattere.

^regex

Trova regex che deve corrispondere all'inizio della riga.

regex$

Trova regex che deve corrispondere alla fine della riga.

[abc]

Definizione di insieme: può corrispondere alla lettera a, b o c

[abc][vz]

Definizione di insieme: può corrispondere a a, b o c, seguita da v o z

[^abc]

Quando il simbolo ^ è il primo carattere tra parentesi quadre, nega il pattern. Corrisponde a qualsiasi carattere eccetto a, b o c

[a-d1-7]

Intervalli: corrisponde a una lettera tra a e d e a cifre tra 1 e 7, ma non a d1

X|Z

Trova X oppure Z

XZ

Trova X seguita direttamente da Z

$

Verifica se segue la fine di una riga

 

 

Meta-caratteri

I seguenti metacaratteri hanno un significato predefinito e rendono più semplici da usare alcuni schemi comuni, ad esempio, \d invece di [0..9].

Espressione Regolare Descrizione

\d

Una cifra numerica, abbreviazione per [0-9]

\D

Un carattere non numerico, abbreviazione per [^0-9]

\s

Un carattere di spazio bianco (whitespace), abbreviazione per [ \t\n\x0b\r\f]

\S

Un carattere non di spazio bianco (non-whitespace), abbreviazione

\w

Un carattere alfanumerico, abbreviazione per [a-zA-Z_0-9]

\W

Un carattere non alfanumerico, abbreviazione per [^\w]

\S+

Uno o più caratteri non di spazio bianco

\b

Corrisponde a un confine di parola, dove un carattere di parole è [a-zA-Z0-9_]

Questi metacaratteri hanno la stessa lettera iniziale del concetto che rappresentano, ad esempio: cifra (digit), spazio (space), parola (word) e confine (boundary). I simboli maiuscoli indicano l'opposto.

 

Quantificatore

Un quantificatore definisce la frequenza con cui un elemento può presentarsi. I simboli ?, *, + e {} definiscono la quantità delle espressioni regolari.

Espressione Regolare Descrizione Esempi

*

Si verifica zero o più volte, * abbreviazione per {0,}

X* trova nessuna o più lettere X, <sbr /> .* trova qualsiasi sequenza di caratteri

+

Si verifica una o più volte + abbreviazione per {1,}

X+- trova una o più lettere X

?

Si verifica zero o una volta, ? abbreviazione per {0,1}.

X? ftrova nessuna o esattamente una lettera X

{X}

Si verifica X volte, le {} indicano la quantità dell'elemento precedente

\d{3} cerca tre cifre, .{10} per una sequenza di 10 caratteri.

{X,Y}

Si verifica tra X e Y volte

\d{1,4} significa che \d deve comparire almeno una volta e al massimo quattro volte

*?

? dopo un quantificatore lo rende riluttante (reluctant quantifier). Cerca la corrispondenza più piccola possibile, fermandosi alla prima.

 
 

Sguardo negativo al futuro

Il look ahead negativo offre la possibilità di escludere un pattern. In questo modo si può affermare che una stringa non deve essere seguita da un'altra stringa. Il look ahead negativo è definito tramite (?!pattern). Ad esempio, il seguente codice corrisponderà ad "a" se "a" non è seguito da "b": a(?!b)

Specificare le modalità all'interno dell'espressione regolare

È possibile aggiungere i modificatori di modalità all'inizio dell'espressione regolare. Per specificare più modalità, è sufficiente unirle, come in (?ismx).

  • (?i) rende l'espressione regolare insensibile alle maiuscole e alle minuscole.
  • (?s) per "modalità riga singola" fa sì che il punto corrisponda a tutti i caratteri, comprese le interruzioni di riga.
  • (?m) per "modalità multi-riga" fa sì che il cursore e il dollaro corrispondano all'inizio e alla fine di ogni riga nella stringa oggetto.


Backslash

La backslash \ è un carattere di escape. Ciò significa che la barra rovesciata ha un significato predefinito. È necessario utilizzare la doppia backslash  \\ per definire una singola backslash.