Passa al contenuto principale
Workday User Guide
Ultimo aggiornamento: 2023-06-23
Quantificatori regex

Quantificatori regex

Costrutti quantificatore

I quantificatori specificano la frequenza con cui deve corrispondere il costrutto dell'espressione regolare precedente. Le classi di quantificatori sono:
  • Avido
  • Riluttante
  • Possessivo
La differenza tra i quantificatori avidi, riluttanti e possessivi riguarda la parte della stringa da provare per la corrispondenza iniziale e il modo in cui riprovare se il tentativo iniziale non produce una corrispondenza.
Per impostazione predefinita, i quantificatori sono
greedy
. Un quantificatore avido tenta prima una corrispondenza con l'intera stringa di input. Se si ottiene una corrispondenza, la corrispondenza viene considerata un successo e il motore può passare al costrutto successivo nell'espressione regolare. Se il primo tentativo non produce una corrispondenza, il motore arretra un carattere alla volta finché non trova una corrispondenza. Quindi un quantificatore avido controlla le possibili corrispondenze in ordine dalla stringa di input più lunga possibile alla stringa di input più breve possibile, provando in modo ricorsivo da destra a sinistra.
L'aggiunta di un
?
(punto interrogativo) a un quantificatore avido lo rende
riluttante
. Un quantificatore riluttante tenta prima una corrispondenza dall'inizio della stringa di input, iniziando con la parte più breve possibile della stringa che corrisponde al costrutto regex. Se si ottiene una corrispondenza, la corrispondenza viene considerata un successo e il motore può passare al costrutto successivo nell'espressione regolare. Se il primo tentativo non produce una corrispondenza, il motore aggiunge un carattere alla volta finché non trova una corrispondenza. Pertanto, un quantificatore riluttante verifica le possibili corrispondenze in ordine dalla stringa di input più breve possibile alla stringa di input più lunga possibile, provando in modo ricorsivo da sinistra a destra.
L'aggiunta di un
+
(segno più) a un quantificatore avido lo rende
possessivo
. Un quantificatore possessivo è come un quantificatore avido al primo tentativo (cerca una corrispondenza con l'intera stringa di input). La differenza è che, a differenza di un quantificatore avido, un quantificatore possessivo non riprova con una stringa più breve se non trova una corrispondenza. Se la corrispondenza iniziale non riesce, il quantificatore possessivo segnala una corrispondenza non riuscita. Non esegue altri tentativi.
Costrutto avido
Costrutto riluttante
Costrutto possessivo
Descrizione
Esempio
?
??
?+
Corrisponde al carattere o al costrutto precedente una volta o non corrisponde affatto.
st?on
corrisponde a "son" in "johnson" e "ston" in "johnston" ma non in "clinton" o "version"
*
*?
*+
Corrisponde al carattere o al costrutto precedente zero o più volte.
if*
corrisponde a "if", "iff" in "diff" o "i" in "print"
+
+?
++
Corrisponde al carattere o al costrutto precedente una o più volte.
if+
corrisponde a "if", "iff" in "diff", ma non a "print"
{n}
{n}?
{n}+
Corrisponde al carattere o al costrutto precedente esattamente
n
volte.
o{2}
corrisponde a "oo" in "lookup" e alle prime 2 o in "fooooo" ma niente in "mount"
{n,}
{n,}?
{n,}+
Corrisponde al carattere o al costrutto precedente almeno
n
volte.
o{2,}
corrisponde a "oo" in "lookup" con tutte le 5 o in "fooooo" ma niente in "mount"
{n,m}
{n,m}?
{n,m}+
Corrisponde al carattere o al costrutto precedente almeno
n
volte, ma non più di
m
volte.
F{2,4}
corrisponde a "FF" in "#FF0000" e alle ultime 4 F in "#FFFFFF"