Beachten Sie, daß im Fall von Alternierungen das Backtracking als Sprung erfolgt: Scheitert die Suche nach und, folgt jedoch im Suchmuster |oder, so wird um jene drei Zeichen zurückgesprungen, die für die Suche nach und bereits verarbeitet wurden. Das Backtracking bei gierigen Quantifikatoren geht dagegen Zeichen um Zeichen rückwärts. Folgen deshalb auf gierige Quantifikatoren weitere Zeichen, so wird die gesamte Zeichenfolge von der aktuellen Position bis zum Ende, am Ende beginnend, rückwärts Zeichen um Zeichen verarbeitet, bevor das endgültige Mißlingen ausgegeben bzw. weiterverarbeitet wird.
Ein Beispiel: Die Suche nach a.+c liefert abcdef. Das erste 'a' wird auf der Position 1 gefunden, also wird diese zwischengespeichert. Aufgrund '.+' gibt es einen Sprung zum Ende, dreimal wird ein 'c' vergeblich gesucht und dieses schließlich auf Position 3 gefunden. Bei der Suche nach a.+g gibt es dagegen mit dem Start 'a' fünf negative Versuche, bis die Suche ausgehend von diesem 'a' endgültig gescheitert ist und zum 'b' auf der zweiten Position weitergewandert wird. Das 'b' ist kein 'a', eine Alternierung gibt es auf dieser Position auch nicht, also kann die zweite Position nicht als Startposition für eine Weiterverarbeitung genutzt werden, es wird zur dritten Position gewechselt. Dies wiederholt sich, so daß kein Suchergebnis (im RegEx-Trainer: Keine Zeile) gefunden wird. Wird das Suchmuster auf eine Zeichenfolge abacadaeaf angewandt, so wird fünf Mal, ausgehend von jedem der fünf 'a', zum Ende gesprungen und die dazwischenliegende Zeichenfolge rückwärts durchsucht.
Bei den Alternierungen ist zu beachten, daß sie von links nach rechts ausgewertet werden. Hierbei kann es zu unerwünschten Effekten kommen, falls ein zuerst zu prüfender Ausdruck gleichzeitig ein Teil eines später zu testenden Ausdrucks ist. Das Suchmuster ins|insge findet insbesondere arbeiten wir insgeheim exzessiv, da es zunächst 'ins' prüft und beim erfolgreichen Vergleich den zweiten Ausdruck nicht mehr näher betrachtet, sondern vor das erste Zeichen nach der aktuellen Fundstelle wechselt. Die Umkehrung insge|ins prüft zunächst den längeren der beiden Ausdrücke und findet an der zweiten Fundstelle diesen, hier wird die kürzere Version ignoriert. Damit produziert das zweite Suchmuster insbesondere arbeiten wir insgeheim exzessiv als Ergebnis.
A läßt sich also interpretieren als If-Bedingung mit einem leeren Then-Zweig, hier wird die Auswertung sofort nach dem Gesamtausdruck fortgesetzt. Der Else-Zweig enthält das zusätzliche Kriterium B, so daß dieser Zweig nicht in jedem Fall, sondern nur beim Vorliegen von B ausgeführt wird. 'Ausführen' müßte in diesem Zusammenhang als 'Fortsetzung des Prüfens anstelle eines Abbruchs' interpretiert werden.Prüfe A, falls erfolgreich, gehe weiter. Falls A nicht erfüllt ist, prüfe B.
Ein interessanteres Beispiel ist das Suchmuster \bgeehrte(?(r )(r Herr)|( Frau)). Es sucht nach dem Wortanfang 'geehrte', wie er in Briefen verwendet wird und prüft, ob anschließend ein 'r ' folgt. Gilt dies, so muß ein 'Herr' angesprochen werden, ansonsten eine 'Frau' gefunden werden. Werden die inneren Ausdrücke als positive Lookahead notiert, so ergibt sich geehrte(?(r )(?=r Herr)|(?= Frau)) mit denselben Fundstellen. Dieser Ausdruck läßt sich durch einfaches Ersetzen der positiven durch die negative Lookahead-Version nutzen, um nun alle semantisch inadäquaten Ausdrücke auszugeben: geehrte(?(r )(?!r Herr)|(?! Frau)) findet Sehr geehrte Herr Müller ebenso wie Sehr geehrter Frau Maier, die korrekten Kombinationen werden übersprungen. Da zuletzt auf eine Assertion geprüft wird und diese nicht aufzeichnend ist, wird als Suchergebnis nur geehrte ausgegeben. Die Aufzeichnung des folgenden fehlerhaften Ausdrucks läßt sich auch nicht durch eine zusätzliche Klammer erzwingen. Sollen diese nicht mehr bekannten Werte ('Frrau', 'Heer') zusätzlich verarbeitet werden, so kann man entsprechende Ausdrücke anfügen: geehrte(?(r )(?!r Herr)|(?! Frau))(r{0,1})\s+?(.+?\b).
Eine verallgemeinerte Form der If/Then/Else-Verarbeitung kann in der Form (?((?'if' ))(?'then' )|(?'else' )) notiert werden. Diese Version stellt keinen neuen Inhalt dar, sondern fügt dem If-Konstrukt lediglich benannte Gruppen hinzu.