Vorwärts- und Rückwärtssuche ohne Backtracking
Bei positivem Lookahead und Lookbehind findet keine Rückverfolgung statt. Das bedeutet, dass ihre Inhalte genauso behandelt werden wie die Inhalte einer nicht zurückverfolgenden (?> )
-Gruppe.
Da Lookahead und Lookbehind immer eine Breite von Null haben, ist der Rückverfolgungsmechanismus nur erkennbar, wenn aufzeichnende Gruppen innerhalb einer positiven Voraus- bzw. Rückschau auftauchen. Ein Beispiel: Mit dem Ausdruck "(?=(a*))\1a
" wird niemals eine Übereinstimmung gefunden, da die innerhalb des Lookahead definierte Gruppe 1 jedes Auftreten des Zeichens "a" beansprucht, der folgende Ausdruck "\1a
" jedoch ein weiteres "a" erfordert, um ein Suchergebnis zu erhalten. Da der Lookaheadausdruck nicht zurückverfolgt wird, wird kein neuer Versuch für Gruppe 1 mit weniger Vorkommnissen des Zeichens "a" gestartet.
Weitere Informationen zu Gruppierungs-, Lookahead- und Lookbehindkonstrukten finden Sie unter Gruppierungskonstrukte.