Match.NextMatch Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt ein neues Match Objekt mit den Ergebnissen für die nächste Übereinstimmung zurück, beginnend an der Position, an der die letzte Übereinstimmung beendet wurde (am Zeichen nach dem letzten übereinstimmenden Zeichen).
public:
System::Text::RegularExpressions::Match ^ NextMatch();
public System.Text.RegularExpressions.Match NextMatch();
member this.NextMatch : unit -> System.Text.RegularExpressions.Match
Public Function NextMatch () As Match
Gibt zurück
Die nächste Übereinstimmung des regulären Ausdrucks.
Ausnahmen
Ein Timeout ist aufgetreten.
Hinweise
Diese Methode ähnelt dem Erneuten Aufrufen Match(String, Int32) und Übergeben Index + Length als neue Startposition.
Diese Methode ändert die aktuelle Instanz nicht. Stattdessen wird ein neues Match Objekt zurückgegeben, das Informationen zur nächsten Übereinstimmung enthält.
Beim Versuch, die nächste Übereinstimmung abzurufen, wird möglicherweise ein RegexMatchTimeoutException Timeoutwert für Übereinstimmungsvorgänge ausgelöst, und der Versuch, die nächste Übereinstimmung zu finden, überschreitet dieses Timeoutintervall.
Wenn Sie versuchen, ein Muster für reguläre Ausdrücke mit einer leeren Übereinstimmung abzugleichen, wird das Modul für reguläre Ausdrücke ein Zeichen in der Eingabezeichenfolge voranschreiten, bevor Sie die Übereinstimmung wiederholen, um eine endlose Schleife zu vermeiden. Anrufer sollten nicht davon ausgehen, dass jede Übereinstimmung um mindestens eine Position vorankommt, da Übereinstimmungen mit nuller Breite möglich sind.
Hinweise für Aufrufer
Wenn ein Übereinstimmungsversuch durch Aufrufen der NextMatch() Methode wiederholt wird, gibt das Modul für reguläre Ausdrücke leere Übereinstimmungen für eine spezielle Behandlung. In der Regel beginnt die Suche nach der nächsten Übereinstimmung genau dort, NextMatch() wo die vorherige Übereinstimmung unterbrochen wurde. Nach einer leeren Übereinstimmung wechselt die NextMatch() Methode jedoch um ein Zeichen, bevor Sie die nächste Übereinstimmung ausprobieren. Dieses Verhalten garantiert, dass das Modul für reguläre Ausdrücke die Zeichenfolge durchläuft. Andernfalls führt eine leere Übereinstimmung nicht zu einer Vorwärtsbewegung, würde die nächste Übereinstimmung an genau der gleichen Stelle wie die vorherige Übereinstimmung beginnen, und sie würde wiederholt mit derselben leeren Zeichenfolge übereinstimmen.
Dies wird im folgenden Beispiel veranschaulicht. Das Muster a* für reguläre Ausdrücke sucht nach null oder mehr Vorkommen des Buchstabens "a" in der Zeichenfolge "abaabb". Wie die Ausgabe aus dem Beispiel zeigt, findet die Suche sechs Übereinstimmungen. Der erste Übereinstimmungsversuch findet das erste "a". Die zweite Übereinstimmung beginnt genau dort, wo das erste Spiel endet, vor dem ersten b; es findet null Vorkommen von "a" und gibt eine leere Zeichenfolge zurück. Die dritte Übereinstimmung beginnt nicht genau an der Stelle, an der die zweite Übereinstimmung beendet wurde, da die zweite Übereinstimmung eine leere Zeichenfolge zurückgegeben hat. Stattdessen beginnt es später mit einem Zeichen nach dem ersten "b". Die dritte Übereinstimmung findet zwei Vorkommen von "a" und gibt "aa" zurück. Der vierte Übereinstimmungsversuch beginnt, wo die dritte Übereinstimmung beendet wurde, vor dem zweiten "b", und gibt eine leere Zeichenfolge zurück. Der fünfte Übereinstimmungsversuch führt erneut zu einem Zeichen, sodass er vor dem dritten "b" beginnt und eine leere Zeichenfolge zurückgibt. Die sechste Übereinstimmung beginnt nach dem letzten "b" und gibt erneut eine leere Zeichenfolge zurück.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = "a*";
string input = "abaabb";
Match m = Regex.Match(input, pattern);
while (m.Success) {
Console.WriteLine("'{0}' found at index {1}.",
m.Value, m.Index);
m = m.NextMatch();
}
}
}
// The example displays the following output:
// 'a' found at index 0.
// '' found at index 1.
// 'aa' found at index 2.
// '' found at index 4.
// '' found at index 5.
// '' found at index 6.
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim pattern As String = "a*"
Dim input As String = "abaabb"
Dim m As Match = Regex.Match(input, pattern)
Do While m.Success
Console.WriteLine("'{0}' found at index {1}.",
m.Value, m.Index)
m = m.NextMatch()
Loop
End Sub
End Module
' The example displays the following output:
' 'a' found at index 0.
' '' found at index 1.
' 'aa' found at index 2.
' '' found at index 4.
' '' found at index 5.
' '' found at index 6.