Lookahead e lookbehind senza backtracking
Il lookahead e il lookbehind positivi non effettuano il backtracking. In altre parole, il relativo contenuto viene considerato allo stesso modo del contenuto di un gruppo nonbacktracking (?> )
.
Poiché lookahead e lookbehind sono sempre di larghezza zero, il funzionamento del backtracking è visibile solo quando l'acquisizione dei gruppi viene visualizzata all'interno del lookahead e del lookbehind positivi. L'espressione (?=(a*))\1a
ad esempio non verrà mai soddisfatta perché \1a
richiede un carattere "a" dopo che il gruppo 1, definito all'interno del lookahead, ha già utilizzato tutti quelli presenti. Poiché l'espressione di lookahead non è sottoposta a backtracking, il modulo per la ricerca delle corrispondenze non riprova con il gruppo 1 con una quantità inferiore di caratteri "a".
Per ulteriori informazioni su raggruppamento, lookahead e lookbehind, vedere Costrutti di raggruppamento