Creazione di un'espressione regolare
Un'espressione regolare descrive una o più stringhe di cui trovare una corrispondenza durante la ricerca del corpo di un testo. L'espressione regolare serve come pattern di caratteri da confrontare con il testo cercato.
Le espressioni regolari vengono costruite con un processo molto simile alla creazione di espressioni aritmetiche. Espressioni di piccole dimensioni vengono combinate utilizzando diversi metacaratteri e operatori in modo da creare espressioni più estese.
I componenti di un'espressione regolare possono essere rappresentati da caratteri singoli, set di caratteri, intervalli di caratteri o alternative tra caratteri. Possono inoltre essere costituiti da qualsiasi combinazione di tali componenti.
Costruzione di un'espressione regolare
Un'espressione regolare viene costruita inserendo i diversi componenti dell'espressione tra una coppia di delimitatori. In JScript, i delimitatori sono una coppia di caratteri della barra (/), come illustrato nell'esempio seguente.
/expression/
Esempi di espressioni regolari
Nella tabella seguente sono riportati esempi di espressioni regolari tipiche.
Espressione regolare |
Descrizione |
---|---|
/^\s*$/ |
Corrisponde a una riga vuota. |
/\d{2}-\d{5}/ |
Corrisponde a un numero ID costituito da due cifre, un trattino e cinque cifre aggiuntive. |
/<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/ |
Corrisponde a un tag HTML. |
Caratteri ordinari
La forma più semplice di espressione regolare è costituita da un singolo carattere ordinario che viene confrontato con una stringa cercata. L'espressione regolare a carattere singolo A, ad esempio, corrisponde a qualsiasi occorrenza della lettera A all'interno della stringa cercata.
Di seguito sono riportati alcuni esempi di espressioni regolari a carattere singolo di JScript:
/a/
/7/
/M/
È possibile combinare più caratteri singoli in modo da formare un'espressione più estesa. L'espressione /the/, ad esempio, corrisponde a "the" nelle stringhe cercate, ovvero "the", "there", "other" e "over the lazy dog".
Non è necessario alcun operatore di concatenazione, è sufficiente inserire un carattere dopo l'altro.
Metacaratteri
Oltre ai caratteri ordinari, un'espressione regolare può contenere metacaratteri. Un esempio di metacarattere è \d, che corrisponde a una cifra.
Per ulteriori informazioni, vedere Sintassi delle espressioni regolari.
I caratteri ordinari sono costituiti da tutti i caratteri stampabili e non stampabili non definiti esplicitamente come metacaratteri. Sono inclusi tutti i caratteri alfabetici maiuscoli e minuscoli, tutte le cifre, tutti i segni di punteggiatura e alcuni simboli.
Corrispondenza di qualsiasi carattere
Il carattere punto (.) corrisponde a qualsiasi carattere singolo stampabile o non stampabile di una stringa, escluso il carattere di nuova riga (\n). L'espressione regolare /a.c/ corrisponde ad "aac", "abc", "acc", "adc", "a1c", "a2c", "a-c" e "a#c".
Per ottenere una corrispondenza con un punto (.) incluso nella stringa cercata, è possibile anteporre al punto nell'espressione un carattere di barra rovesciata (\). L'espressione /filename\.ext/ corrisponde a "filename.ext".
Elenchi di caratteri corrispondenti
È possibile creare un elenco di caratteri corrispondenti racchiudendo uno o più caratteri singoli in parentesi quadre [ ].
Qualsiasi carattere racchiuso in un'espressione fra parentesi quadre corrisponde a un singolo carattere nella posizione dell'espressione regolare in cui viene visualizzata l'espressione fra parentesi. L'espressione /Chapter [12345]/, ad esempio, corrisponde a "Chapter 1", "Chapter 2", "Chapter 3", "Chapter 4" e "Chapter 5".
Per specificare i caratteri corrispondenti mediante un intervallo anziché i caratteri stessi, è possibile utilizzare il trattino (-). L'espressione /Chapter [1-5]/ è equivalente a /Chapter [12345]/.
Per trovare tutti i caratteri non inclusi nell'elenco o nell'intervallo, inserire il carattere di accento circonflesso (^) all'inizio dell'elenco. L'espressione /[^aAeEiIoOuU]/, ad esempio, corrisponde a qualsiasi carattere non vocalico.
Per ulteriori informazioni, vedere Elenchi di caratteri corrispondenti.
Quantificatori
È possibile utilizzare i quantificatori per specificare un'espressione regolare nella quale un carattere o un set di caratteri sia ripetuto un determinato numero di volte.
I quantificatori si riferiscono all'espressione immediatamente precedente ossia a sinistra del quantificatore stesso.
I quantificatori sono racchiusi in parentesi graffe {} e includono valori numerici per i limiti superiore e inferiore delle occorrenze. c{1,2} corrisponde ad esempio a una o due occorrenze della lettera c.
Quando si specifica un solo numero, questo viene utilizzato come limite superiore a meno che non sia seguito da una virgola. c{3}, ad esempio, corrisponde esattamente a tre caratteri della lettera c, mentre c{5,} corrisponde a cinque o più occorrenze della lettera c.
Sono disponibili inoltre quantificatori per caratteri singoli, come mostrato nella tabella seguente.
Quantificatore |
Quantificatore esplicito |
Significato |
---|---|---|
* |
{0,} |
Trova la corrispondenza dell'elemento precedente zero o più volte. |
+ |
{1,} |
Trova la corrispondenza dell'elemento precedente una o più volte. |
? |
{0,1} |
Corrisponde all'elemento precedente zero volte o una volta soltanto. |
Di seguito sono riportate alcune espressioni di esempio insieme alle stringhe di ricerca a cui corrispondono.
Espressione regolare |
Significato del quantificatore |
Corrispondenze |
---|---|---|
/Chapter [1-9][0-9]{0,}/ oppure /Chapter [1-9][0-9]*/ |
Corrisponde a [0-9] zero o più volte. |
"Chapter 1", "Chapter 25", "Chapter 401320" |
/Chapter [0-9]{1,2}/ |
Corrisponde a [0-9] una o due volte. |
"Chapter 0", "Chapter 03", "Chapter 1", "Chapter 25", "Chapter 40" |
/Chapter [1-9][0-9]{0,1}/ oppure /Chapter [1-9][0-9]?/ |
Corrisponde a [0-9] zero volte o una volta soltanto. |
"Chapter 1", "Chapter 25", "Chapter 40" |
Per ulteriori informazioni, vedere Quantificatori in JScript.
Limiti di riga e di parola
Gli ancoraggi consentono di specificare che un'espressione regolare, affinché rappresenti una corrispondenza, deve essere inserita all'inizio o alla fine della stringa cercata oppure all'inizio o alla fine di una riga o di una parola inclusa in tale stringa. Per ulteriori informazioni, vedere Punti di ancoraggio.
Specifica di alternative
Il carattere "|" specifica che una corrispondenza è rappresentata da due o più alternative. L'espressione regolare /(Chapter|Section) [1-9]/ di JScript corrisponde a "Chapter 1", "Chapter 9" e "Section 2". Per ulteriori informazioni, vedere Alternanza e sottoespressioni.
Utilizzo delle sottocorrispondenze
Le parentesi vengono utilizzate in un'espressione regolare per creare una sottoespressione. La sottocorrispondenza risultante può essere recuperata dal programma. Per ulteriori informazioni, vedere Alternanza e sottoespressioni.
È possibile fare riferimento a una sottoespressione dall'interno di un'espressione regolare e dall'interno di una stringa di sostituzione. Per ulteriori informazioni, vedere Backreference in JScript.