Documentazione di Flash CS3 |
|||
| Programmazione in ActionScript 3.0 > Uso delle espressioni regolari > Sintassi delle espressioni regolari > Quantificatori | |||
I quantificatori consentono di specificare ripetizioni di caratteri singoli o di sequenze di caratteri all'interno dei modelli, come illustrato di seguito:
|
Metacarattere quantificatore |
Descrizione |
|---|---|
|
|
Corrisponde a una ripetizione di zero o più volte del carattere precedente. |
|
|
Corrisponde a una ripetizione di una o più volte del carattere precedente. |
|
|
Corrisponde a una ripetizione di zero o una volta del carattere precedente. |
|
e
|
Specifica una quantità numerica o un intervallo di numeri per l'elemento precedente:
|
Un quantificatore può essere applicato a un unico carattere, a una classe di caratteri o a un gruppo:
/a+/ corrisponde al carattere a ripetuto una o più volte./\d+/ corrisponde a una o più cifre./[abc]+/ corrisponde alla ripetizione di uno o più caratteri a, b o c./(very, )*/ corrisponde alla parola very seguita da una virgola e da uno spazio ripetuto zero o più volte.I quantificatori possono usati anche all'interno di gruppi parentetici a cui sono applicati dei quantificatori. Nell'esempio seguente, il quantificatore corrisponde a stringhe del tipo word e word-word-word:
/\w+(-\w+)*/
Per impostazione predefinita, le espressioni regolari agiscono in modo greedy, vale a dire che ogni porzione di modello dell'espressione regolare (come .*) cerca una corrispondenza con quanti più caratteri possibili nella stringa prima di lasciare il posto alla porzione successiva dell'espressione. Si consideri, ad esempio, l'espressione regolare e la stringa seguenti:
var pattern:RegExp = /<p>.*<\/p>/;
str:String = "<p>Paragraph 1</p> <p>Paragraph 2</p>";
L'espressione regolare corrisponde all'intera stringa:
<p>Paragraph 1</p> <p>Paragraph 2</p>
Supponiamo, tuttavia, che si desideri individuare una corrispondenza solo per un gruppo <p>...</p>. Per ottenere questo risultato, procedere come segue:
<p>Paragraph 1</p>
Aggiungere un punto di domanda (?) dopo i quantificatori che si desidera trasformare in quantificatori lazy. L'espressione regolare dell'esempio seguente, che usa il quantificatore lazy *?, cerca una corrispondenza con <p> seguito dal minimo numero di caratteri possibili, seguito da </p>:
/<p>.*?<\/p>/
Tenere presenti gli aspetti seguenti dei quantificatori:
{0} e {0,0} non escludono un elemento da una corrispondenza./abc+*/.s (dotall), anche se seguito dal quantificatore *. Consideriamo l'esempio del codice seguente:
var str:String = "<p>Test\n";
str += "Multiline</p>";
var re:RegExp = /<p>.*<\/p>/;
trace(str.match(re)); // null;
re = /<p>.*<\/p>/s;
trace(str.match(re));
// output: <p>Test
// Multiline</p>
Per ulteriori informazioni, vedere Flag s (dotall).
Flash CS3
Inviami un messaggio e-mail quando vengono aggiunti dei commenti a questa | Rapporto sui commenti
Pagina corrente: http://livedocs.adobe.com/flash/9.0_it/main/00000116.html