Vai al contenuto
eLearner.app
Modulo 1 · Lezione 4 di 44/32 nel corso~10 min
Lezioni del modulo (4/4)

Escape dei meta-caratteri

Alcuni caratteri in regex hanno un significato speciale: si chiamano meta-caratteri. Se vuoi matchare il carattere letterale (es. un . vero, un + vero, una parentesi vera) devi farli precedere da un backslash \, che li escapa.

I meta-caratteri da ricordare sono dodici:

Code
.  *  +  ?  ^  $  |  \  (  )  [  ]  {  }  /

(Il / non e' un meta-carattere del motore in se', ma va escapato nella notazione letterale /.../ di JavaScript.)

Code
Pattern: \$\d+\.\d\d
Sample:  Prezzi: $9.99, $12.50, totale $22.49.
                 ^^^^^  ^^^^^^         ^^^^^^

Qui escapiamo il $ (ancora di fine stringa) e il . (jolly) per matchare i caratteri letterali nel formato prezzo "dollaro + numero + punto + due cifre".

Doppio backslash nelle stringhe JS

Quando scrivi un pattern dentro a una stringa JavaScript (come fai nei nostri esercizi), il backslash dev'essere raddoppiato. La stringa JS '\\d' contiene due caratteri (\ e d) ed e' esattamente il pattern regex \d.

JS
const re1 = /\d+/; // notazione letterale: un solo backslash
const re2 = new RegExp('\\d+'); // stringa: doppio backslash

L'editor del corso mostra il pattern gia' decodificato (vedi un singolo \d); non devi raddoppiare nulla tu.

I 12 meta-caratteri speciali

I caratteri con un significato speciale nell'engine sono esattamente 12: \\\ ^ $ . | ? * + ( ) [ {. Se intendi matcharli come testo letterale, devi farli precedere da un backslash. In alcuni linguaggi o contesti (es. stringhe JS non grezze), potrebbe essere necessario raddoppiare il backslash (\\\\).

Prova tu

Esercizio#regex.m1.l4.e1
Tentativi: 0Caricamento…

Trova ogni prezzo nel formato `$N.NN` (dollaro, una o piu' cifre, punto, due cifre). Ricorda di escapare `$` e `.`.

Caricamento editor…
Mostra suggerimento

$ va escapato come \\$, il punto come \\. - altrimenti il punto matcha qualunque cosa.

Soluzione disponibile dopo 3 tentativi

Esercizio di ripasso

Esercizio#regex.m1.l4.e2
Tentativi: 0Caricamento…

Trova ogni punto interrogativo letterale `?` nel testo. `?` e' un meta-carattere: va escapato.

Caricamento editor…
Mostra suggerimento

Senza escape, ? sarebbe un quantificatore (modulo 2). Mettigli un \\ davanti.

Soluzione disponibile dopo 3 tentativi

Sfida aggiuntiva

Esercizio#regex.m1.l4.e3
Tentativi: 0Caricamento…

Trova tutte le estensioni `.tar.gz` nel testo, assicurandoti che i punti siano trattati come caratteri letterali.

Caricamento editor…
Mostra suggerimento

Inserisci un backslash prima di ogni punto per escaparlo.

Soluzione disponibile dopo 3 tentativi