Match.NextMatch Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Retourneert een nieuw Match object met de resultaten voor de volgende overeenkomst, beginnend bij de positie waarop de laatste overeenkomst is geëindigd (bij het teken na het laatste overeenkomende teken).
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
Retouren
De volgende reguliere expressie komt overeen.
Uitzonderingen
Er is een time-out opgetreden.
Opmerkingen
Deze methode is vergelijkbaar met het opnieuw aanroepen Match(String, Int32) en doorgeven Index + Length als de nieuwe beginpositie.
Met deze methode wordt het huidige exemplaar niet gewijzigd. In plaats daarvan wordt een nieuw Match object geretourneerd dat informatie over de volgende overeenkomst bevat.
Als u probeert de volgende overeenkomst op te halen, kan er een RegexMatchTimeoutException time-outwaarde voor overeenkomende bewerkingen optreden en de poging om de volgende overeenkomst te vinden die time-outinterval overschrijdt.
Wanneer u een normaal expressiepatroon probeert te vergelijken met een lege overeenkomst, wordt door de engine voor reguliere expressies één teken in de invoertekenreeks voordat u de overeenkomst opnieuw probeert uit te voeren, om een oneindige lus te voorkomen. Bellers mogen er niet van uitgaan dat elke overeenkomst met ten minste één positie vooruitgaat, omdat overeenkomsten met nulbreedte mogelijk zijn.
Notities voor bellers
Wanneer een overeenkomstpoging wordt herhaald door de NextMatch() methode aan te roepen, geeft de reguliere expressie-engine lege overeenkomsten speciale behandeling. NextMatch() Meestal begint de zoekopdracht naar de volgende overeenkomst precies waar de vorige overeenkomst was gebleven. Na een lege overeenkomst wordt de NextMatch() methode echter met één teken vooruitgegaan voordat de volgende overeenkomst wordt geprobeerd. Dit gedrag garandeert dat de engine voor reguliere expressies door de tekenreeks gaat. Anders, omdat een lege overeenkomst niet resulteert in een voorwaartse beweging, begint de volgende overeenkomst op exact dezelfde plaats als de vorige overeenkomst en komt deze herhaaldelijk overeen met dezelfde lege tekenreeks.
In het volgende voorbeeld ziet u een afbeelding. Het reguliere expressiepatroon a* zoekt naar nul of meer exemplaren van de letter 'a' in de tekenreeks 'abaabb'. Zoals de uitvoer uit het voorbeeld laat zien, vindt de zoekopdracht zes overeenkomsten. Met de eerste overeenkomstpoging wordt de eerste 'a' gevonden. De tweede overeenkomst begint precies waar de eerste overeenkomst eindigt, vóór de eerste b; het vindt nul exemplaren van 'a' en retourneert een lege tekenreeks. De derde overeenkomst begint niet precies waar de tweede overeenkomst is geëindigd, omdat de tweede overeenkomst een lege tekenreeks heeft geretourneerd. In plaats daarvan begint het één teken later, na de eerste 'b'. De derde overeenkomst vindt twee exemplaren van 'a' en retourneert 'aa'. De vierde overeenkomstpoging begint waar de derde overeenkomst is beëindigd, vóór de tweede 'b' en retourneert een lege tekenreeks. De vijfde overeenkomstpoging gaat opnieuw één teken vooruit, zodat het begint vóór de derde 'b' en een lege tekenreeks retourneert. De zesde overeenkomst begint na de laatste 'b' en retourneert opnieuw een lege tekenreeks.
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.