Sintassi delle espressioni regolari
Un'espressione regolare descrive una o più stringhe di cui trovare una corrispondenza durante la ricerca del corpo di un testo. L'espressione funge da modello per la corrispondenza di un criterio di caratteri con la stringa di ricerca.
Un'espressione regolare è costituita da caratteri normali, ad esempio le lettere dalla a alla z, e da caratteri speciali, denominati metacaratteri.
Caratteri speciali
Nella tabella riportata di seguito viene fornito un elenco dei metacaratteri a carattere singolo e del relativo comportamento nelle espressioni regolari.
Nota
Per ottenere una corrispondenza con uno di tali caratteri speciali, è necessario anzitutto impostarlo come carattere di escape, anteponendo al carattere una barra rovesciata (\). Ad esempio, per cercare il carattere letterale "+", è possibile utilizzare l'espressione "\+".
Metacarattere |
Comportamento |
Esempio |
---|---|---|
* |
Trova zero o più corrispondenze con la sottoespressione o il carattere precedente. Equivalente a {0,}. |
zo* corrisponde a "z" e "zoo". |
+ |
Trova una o più corrispondenze con la sottoespressione o il carattere precedente. Equivalente a {1,}. |
zo+ corrisponde a "zo" e "zoo", ma non a "z". |
? |
Trova zero o una corrispondenza con la sottoespressione o il carattere precedente. Equivalente a {0,1}. Quando ? si trova subito dopo uno degli altri quantificatori (*, +, ?, {n}, {n,}, o {n,m}), il criterio di ricerca è non-greedy. Un criterio di ricerca non-greedy trova il minor numero possibile di corrispondenze nella stringa nella quale si esegue la ricerca. Il criterio greedy predefinito trova il maggior numero possibile di corrispondenze nella stringa nella quale si esegue la ricerca. |
zo? corrisponde a "z" e "zo", ma non a "zoo". o+? corrisponde a una sola "o" in "oooo" e o+ corrisponde a tutte le "o". do(es)? corrisponde a "do" in "do" o "does". |
^ |
Corrisponde alla posizione all'inizio della stringa in cui viene eseguita la ricerca. Se il carattere m (ricerca su più righe) è incluso tra i flag, ^ corrisponde anche alla posizione che segue \n o \r. In caso di utilizzo come primo carattere in un'espressione fra parentesi quadre, ^ nega il set di caratteri. |
^\d{3} corrisponde a 3 cifre numeriche all'inizio della stringa in cui viene eseguita la ricerca. [^abc] corrisponde a qualsiasi carattere tranne a, b e c. |
$ |
Corrisponde alla posizione alla fine della stringa in cui si esegue la ricerca. Se il carattere m (ricerca su più righe) è incluso tra i flag, ^ corrisponde anche alla posizione che precede \n o \r. |
\d{3}$ corrisponde a 3 cifre numeriche alla fine della stringa in cui viene eseguita la ricerca. |
. |
Corrisponde a qualsiasi carattere singolo tranne il carattere di nuova riga \n. Per ottenere una corrispondenza con qualsiasi carattere, incluso \n, utilizzare un criterio come [\s\S]. |
a.c corrisponde a "abc", "a1c" e "a-c". |
[] |
Contrassegna l'inizio e la fine di un'espressione tra parentesi quadre. |
[1-4] corrisponde a "1", "2", "3" o "4". [^aAeEiIoOuU] corrisponde a qualsiasi carattere diverso dalle vocali. |
{} |
Contrassegna l'inizio e la fine di un'espressione con quantificatore. |
a{2,3} corrisponde a "aa" e "aaa". |
() |
Contrassegna l'inizio e la fine di una sottoespressione. Le sottoespressioni possono essere salvate per un utilizzo successivo. |
A(\d) corrisponde alle stringhe da "A0" fino ad "A9". La cifra viene salvata per un uso successivo. |
| |
Indica un'alternativa tra due o più elementi. |
z|food corrisponde a "z" o a "food". (z|f)ood corrisponde a "zood" o a "food". |
/ |
Indica l'inizio o la fine di un criterio espressione regolare in formato letterale in JScript. Dopo il secondo carattere "/", è possibile aggiungere flag a un solo carattere per specificare il comportamento di ricerca. |
/abc/gi è un'espressione regolare letterale JScript che corrisponde a "abc". Il flag g (globale) specifica che devono essere individuate tutte le occorrenze del criterio, e il flag i (ignora maiuscole/minuscole) rende la ricerca senza distinzione maiuscole/minuscole. |
\ |
Contrassegna il carattere successivo come carattere speciale, valore letterale, backreference o carattere di escape ottale. |
\n corrisponde a un carattere di nuova riga. \( corrisponde a "(". \\ corrisponde a "\". |
Quando appaiono all'interno di un'espressione fra parentesi quadre, la maggior parte dei caratteri speciali perdono il proprio significato e rappresentano caratteri ordinari. Per ulteriori informazioni, vedere la sezione relativa ai caratteri nelle espressioni fra parentesi quadre in Elenchi di caratteri corrispondenti.
Metacaratteri
Nella tabella riportata di seguito viene fornito un elenco di metacaratteri con più caratteri e del relativo comportamento nelle espressioni regolari.
Metacarattere |
Comportamento |
Esempio |
---|---|---|
\b |
Corrisponde a un inizio o a una fine di parola, ovvero alla posizione tra una parola e uno spazio. |
er\b corrisponde a "er" in "never" ma non a "er" in "verb". |
\B |
Corrisponde a una parola senza limiti. |
er\B corrisponde a "er" in "verb" ma non a "er" in "never". |
\d |
Corrisponde a una cifra. Equivalente a [0-9]. |
Nella stringa in cui viene eseguita la ricerca "12 345", \d{2} corrisponde a "12" e "34". \d corrisponde a "1", "2", "3", "4" e "5". |
\D |
Corrisponde a un carattere diverso da una cifra. Equivalente a [^0-9]. |
\D+ corrisponde a "abc" e a "def" in "abc123 def". |
\w |
Corrisponde a qualsiasi carattere tra i seguenti: A-Z, a-z, 0-9 e carattere di sottolineatura. Equivalente a [A-Za-z0-9_]. |
Nella stringa in cui viene eseguita la ricerca "The quick brown fox…", \w+ corrisponde a "The", "quick", "brown" e "fox". |
\W |
Corrisponde a qualsiasi carattere eccetto A-Z, a-z, 0-9 e carattere di sottolineatura. Equivalente a [^A-Za-z0-9_]. |
Nella stringa in cui viene eseguita la ricerca "The quick brown fox…", \W+ corrisponde a "..." e a tutti gli spazi. |
[xyz] |
Set di caratteri. Corrisponde a uno qualsiasi dei caratteri specificati. |
[abc] corrisponde alla "a" in "plain". |
[^xyz] |
Set di caratteri negativo. Corrisponde a qualsiasi carattere non incluso tra quelli specificati. |
[^abc] corrisponde a "p", "l", "i" e "n" in "plain". |
[a-z] |
Intervallo di caratteri. Corrisponde a qualsiasi carattere compreso nell'intervallo specificato. |
[a-z] corrisponde a qualsiasi carattere alfabetico minuscolo compreso nell'intervallo tra "a" e "z". |
[^a-z] |
Intervallo di caratteri negativo. Corrisponde a qualsiasi carattere non compreso nell'intervallo di caratteri specificato. |
[^a-z] corrisponde a qualsiasi carattere non compreso nell'intervallo tra "a" e "z". |
{n} |
Trova esattamente n corrispondenze. n rappresenta un valore integer non negativo. |
o{2} non corrisponde alla lettera "o" in "Bob", ma corrisponde alle due lettere "o" in "food". |
{n,} |
Trova almeno n corrispondenze. n rappresenta un valore integer non negativo. * è equivalente a {0,}. + è equivalente a {1,}. |
o{2,} non corrisponde alla lettera "o" in "Bob", ma corrisponde a tutte le lettere "o" in "foooood". |
{n,m} |
Trova almeno n e al massimo m corrispondenze. n e m sono numeri interi non negativi, in cui n <= m. Tra la virgola e i numeri non può essere inserito alcuno spazio. ? è equivalente a {0,1}. |
Nella stringa in cui viene eseguita la ricerca "1234567", \d{1,3} corrisponde a "123", "456" e "7". |
(criterio) |
Corrisponde a criterio e salva la corrispondenza. È possibile recuperare la corrispondenza salvata da elementi di matrice restituiti da exec Method in JScript. Per ottenere una corrispondenza con i caratteri di parentesi ( ), utilizzare "\(" o "\)". |
(Chapter|Section) [1-9] corrisponde a "Chapter 5" e "Chapter" viene salvato per un utilizzo successivo. |
(?:criterio) |
Corrisponde a criterio, ma non salva la corrispondenza. La corrispondenza non viene salvata per un utilizzo successivo. Si rivela utile per combinare le parti di un criterio con un operatore "or" (|), |
industr(?:y|ies) è equivalente a industry|industries. |
(?=criterio) |
Lookahead positivo. Dopo l'individuazione di una corrispondenza la ricerca della corrispondenza successiva inizierà prima del testo di cui è stata individuata la corrispondenza. La corrispondenza non viene salvata per un utilizzo successivo. |
^(?=.*\d).{4,8}$ applica una restrizione per cui una password deve includere da 4 a 8 caratteri e almeno una cifra. All'interno del criterio, .*\d trova qualsiasi numero di caratteri seguito da una cifra. Per la stringa in cui viene eseguita la ricerca "abc3qr", questo corrisponde a "abc3". Iniziando prima, anziché dopo, tale corrispondenza, .{4,8} corrisponde a una stringa di 4-8 caratteri. Corrisponde a "abc3qr". ^ e $ specificano le posizioni all'inizio e alla fine della stringa in cui viene eseguita la ricerca. Ciò consente di evitare l'individuazione di una corrispondenza quando la stringa in cui viene eseguita la ricerca contiene caratteri al di fuori dei caratteri corrispondenti. |
(?!criterio) |
Lookahead negativo. Corrisponde a una stringa di ricerca che non corrisponde al criterio. Dopo l'individuazione di una corrispondenza la ricerca della corrispondenza successiva inizierà prima del testo di cui è stata individuata la corrispondenza. La corrispondenza non viene salvata per un utilizzo successivo. |
\b(?!th)\w+\b corrisponde a parole che non iniziano per "th". All'interno del criterio, \b corrisponde a un confine di parola. Per la stringa in cui viene eseguita la ricerca " quick ", questo corrisponde al primo spazio. (?!th) corrisponde a una stringa che non è "th". Corrisponde a "qu". Avviandosi prima di tale corrispondenza, \w+ corrisponde a una parola. Corrisponde a "quick". |
\cx |
Corrisponde a un carattere di controllo indicato da x. Il valore di x deve essere compreso tra A e Z o tra a e z. Se non lo è, si presuppone che c sia un carattere "c" letterale. |
\cM corrisponde a CTRL+M o carattere di ritorno a capo. |
\xn |
Corrisponde a n, dove n rappresenta un valore di escape esadecimale. I valori di escape esadecimali devono includere esattamente due cifre. Consente l'utilizzo dei codici ASCII nelle espressioni regolari. |
\x41 corrisponde a "A". \x041 è equivalente a "\x04" seguito da "1" (poiché n deve essere esattamente di 2 cifre). |
\num |
Corrisponde a num, dove num rappresenta un valore integer positivo. Si tratta di un riferimento alle corrispondenze salvate. |
(.)\1 corrisponde a due caratteri identici consecutivi. |
\n |
Identifica un valore di escape ottale o un backreference. Se \n è preceduto da almeno n sottoespressioni acquisite, n costituisce un backreference. Altrimenti, n è un valore ottale di escape se n è una cifra ottale (0-7). |
(\d)\1 corrisponde a due cifre identiche consecutive. |
\nm |
Identifica un valore di escape ottale o un backreference. Se \nm è preceduto da almeno nm sottoespressioni acquisite, nm costituisce un backreference. Se \nm è preceduto da almeno n sottoespressioni acquisite, n costituisce un backreference seguito dal valore letterale m. Se non si verifica alcuna di queste condizioni, nm corrisponde al valore ottale di escape nm quando n e m sono cifre ottali (0-7). |
\11 corrisponde a un carattere di tabulazione. |
\nml |
Se n è una cifra ottale (0-3) e m e | sono cifre ottali (0-7), corrisponde al valore di escape ottale nml. |
\011 corrisponde a un carattere di tabulazione. |
\un |
Corrisponde a n, dove n è un carattere Unicode espresso in quattro cifre esadecimali. |
\u00A9 corrisponde al simbolo di copyright (©). |
Caratteri non stampabili
Nella tabella riportata di seguito viene fornito un elenco delle sequenze di escape che rappresentano caratteri non stampabili.
Carattere |
Corrispondenze |
Equivalente a |
---|---|---|
\f |
Carattere di avanzamento modulo. |
\x0c e \cL |
\n |
Carattere di nuova riga. |
\x0a e \cJ |
\r |
Carattere di ritorno a capo. |
\x0d e \cM |
\s |
Qualsiasi carattere di spazio vuoto. Include spazio, tabulazione e avanzamento modulo. |
[ \f\n\r\t\v] |
\S |
Qualsiasi carattere diverso da uno spazio vuoto. |
[^ \f\n\r\t\v] |
\t |
Carattere di tabulazione. |
\x09 e \cI |
\v |
Carattere di tabulazione verticale. |
\x0b e \cK |
Ordine di precedenza
Un'espressione regolare viene valutata analogamente a un'espressione aritmetica, quindi da sinistra verso destra seguendo un determinato ordine di precedenza.
Nella tabella seguente viene illustrato l'ordine di precedenza degli operatori delle espressioni regolari, dal più alto al più basso.
Operatore o operatori |
Descrizione |
---|---|
\ |
Escape |
(), (?:), (?=), [] |
Parentesi e parentesi quadre |
*, +, ?, {n}, {n,}, {n,m} |
Quantificatori |
^, $, \anymetacharacter |
Punti di ancoraggio e sequenze |
| |
Alternanza |
I caratteri hanno la precedenza sull'operatore di alternanza; questo consente, ad esempio, di ottenere una corrispondenza tra "m|food" e "m" oppure "food".