Nächste Übereinstimmung nach einer leeren Übereinstimmung
Wird ein Suchergebnis durch einen Aufruf von "NextMatch" oder unter Verwendung der von "Regex.Matches" zurückgegebenen Auflistung wiederholt auf eine Zeichenfolge angewendet, werden leere Suchergebnisse durch das Modul für reguläre Ausdrücke gesondert behandelt.
Üblicherweise beginnt NextMatch die nächste Suche genau dort, wo das vorherige Suchergebnis aufhört. Nach einem leeren Suchergebnis beginnt NextMatch mit der Suche allerdings erst ein Zeichen weiter. Diese Regel gewährleistet, dass bei der Suche die ganze Zeichenfolge durchlaufen wird. (Falls die Suche exakt an der gleichen Stelle fortgesetzt wird, würde immer wieder dieselbe leere Zeichenfolge als Suchergebnis gefunden werden.)
Ein Beispiel: Die Suche nach "a*" in der Zeichenfolge "abaabb" ergibt die nachstehende Folge von Suchergebnissen:
"a", "", "aa", "", "", ""
Eine andere Darstellung ist
(a)()b(aa)()b()b()
Die erste Suche findet das erste "a". Die zweite Suche beginnt genau dort, wo die erste aufhörte, vor dem ersten "b". Es werden 0 Vorkommnisse von "a" registriert, und die leere Zeichenfolge wird zurückgegeben.
Die dritte Suche beginnt nun nicht genau dort, wo die zweite aufhörte, da vorher eine leere Zeichenfolge zurückgegeben wurde. Stattdessen beginnt sie ein Zeichen weiter, d. h. nach dem ersten "b". Der Buchstabe "a" kommt zweimal vor, daher wird "aa" zurückgegeben.
Die vierte Suche beginnt dort, wo die dritte beendet wurde, nämlich vor dem zweiten "b", wo eine leere Zeichenfolge gefunden wird. Anschließend beginnt die fünfte Suche vor dem letzten "b", wo ebenfalls eine leere Zeichenfolge gefunden wird. Dies ist auch bei der sechste Suche der Fall, die nach dem letzten "b" beginnt.