Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel enthält ergänzende Hinweise zur Referenzdokumentation für diese API.
Die Match(String, Int32) Methode gibt die erste Teilzeichenfolge zurück, die einem Muster für reguläre Ausdrücke entspricht, beginnend bei oder nach der startat Zeichenposition, in einer Eingabezeichenfolge. Das Muster für reguläre Ausdrücke, nach dem die Match(String, Int32) Methode durchsucht wird, wird durch den Aufruf eines der Regex Klassenkonstruktoren definiert. Informationen zu den Sprachelementen, die zum Erstellen eines Musters für reguläre Ausdrücke verwendet werden, finden Sie unter "Sprache für reguläre Ausdrücke" – Kurzübersicht.
Der startat Parameter
Optional können Sie mithilfe des startat Parameters eine Startposition in der Zeichenfolge angeben. Alle Übereinstimmungen, die in der Zeichenfolge vor startat beginnen, werden ignoriert. Wenn Sie keine Anfangsposition angeben, beginnt die Suche an der Standardposition, bei der es sich um das linke Ende input einer Suche von links nach rechts und das rechte Ende input in einer Rechts-nach-links-Suche handelt. Obwohl bei startat begonnen wird, ist der Index jeder zurückgegebenen Übereinstimmung relativ zum Anfang der Zeichenfolge.
Die Engine für reguläre Ausdrücke gibt zwar keine Übereinstimmung zurück, die vor startat beginnt, ignoriert aber die Zeichenfolge vor startat nicht. Das bedeutet, dass Assertionen wie Anker oder Lookbehindassertionen weiterhin für die Eingabe als Ganzes gelten. Der folgende Code enthält zum Beispiel ein strukturiertes Muster mit einer Lookbehind-Assertion, die erfüllt ist, obwohl sie vor dem startat-Index von 5 in der Zeichenfolge auftritt.
using System;
using System.Text.RegularExpressions;
namespace Examples
{
public class Example3
{
public static void Main()
{
string input = "Zip code: 98052";
var regex = new Regex(@"(?<=Zip code: )\d{5}");
Match match = regex.Match(input, 5);
if (match.Success)
Console.WriteLine($"Match found: {match.Value}");
}
}
}
// This code prints the following output:
// Match found: 98052
Tipp
- Wenn ein Muster mit dem
^Anker beginnt, aberstartatgrößer als 0 ist, werden in einer einzeiligen Suche keine Übereinstimmungen gefunden, da sie durch^darauf beschränkt sind, bei Index 0 zu starten. - Der
\GAnker ist erfüllt beistartat. Wenn Sie eine Übereinstimmung so einschränken möchten, dass sie genau an einer bestimmten Zeichenposition in der Zeichenfolge beginnt, verankern Sie daher bei einem Links-nach-rechts-Muster den regulären Ausdruck mit\Gauf der linken Seite. Dadurch wird die Übereinstimmung so eingeschränkt, dass sie genau beistartatbeginnen muss (oder dass die Übereinstimmungen zusammenhängend sind, wenn mehrere Übereinstimmungen gewünscht sind).
Suchen von rechts nach links
Eine Rechts-nach-links-Suche, d. a., wenn das Muster für reguläre Ausdrücke mit der RegexOptions.RightToLeft Option erstellt wird, verhält sich wie folgt:
- Der Scan bewegt sich in die entgegengesetzte Richtung und das Muster wird von hinten (rechts) nach vorne (links) abgeglichen.
- Die Standardstartposition ist das rechte Ende der Eingabezeichenfolge.
- Wenn
startatangegeben, beginnt der Rechts-nach-links-Scan mit dem Zeichen beistartat- 1 (nichtstartat). - Wenn der
\G-Anker am rechten Ende eines Musters angegeben wird, wird die (erste) Übereinstimmung so eingeschränkt, dass sie genau beistartat- 1 endet.
Weitere Informationen zu Suchvorgängen von rechts nach links finden Sie im Modus von rechts nach links.
Ermitteln, ob eine Übereinstimmung gefunden wird
Sie können ermitteln, ob das Muster für reguläre Ausdrücke in der Eingabezeichenfolge gefunden wurde, indem Sie den Wert der Eigenschaft des zurückgegebenen Match Objekts Success überprüfen. Wenn eine Übereinstimmung gefunden wird, enthält die Match-Eigenschaft des zurückgegebenen Value-Objekts die Teilzeichenfolge aus input, die mit dem Muster des regulären Ausdrucks übereinstimmt. Wenn keine Übereinstimmung gefunden wird, ist der Wert String.Empty.
Erste Übereinstimmung oder mehrere Übereinstimmungen
Diese Methode gibt die erste Teilzeichenfolge zurück, die an oder nach der Zeichenposition startat in input gefunden wird und dem regulären Ausdrucksmuster entspricht. Sie können nachfolgende Übereinstimmungen abrufen, indem Sie die Methode des zurückgegebenen Match-Objekts Match.NextMatch wiederholt aufrufen. Sie können auch alle Übereinstimmungen in einem einzelnen Methodenaufruf abrufen, indem Sie die Regex.Matches(String, Int32) Methode aufrufen.
Timeoutausnahmen
Die RegexMatchTimeoutException Ausnahme wird ausgelöst, wenn die Ausführungszeit des Abgleichsvorgangs das vom Regex.Regex(String, RegexOptions, TimeSpan) Konstruktor angegebene Timeoutintervall überschreitet. Wenn Sie beim Aufrufen des Konstruktors kein Timeoutintervall festlegen, wird die Ausnahme ausgelöst, wenn der Vorgang einen Timeoutwert überschreitet, der für die Anwendungsdomäne festgelegt wurde, in der das Regex Objekt erstellt wird. Wenn kein Timeout im Regex Konstruktoraufruf oder in den Eigenschaften der Anwendungsdomäne definiert ist oder wenn der Timeoutwert ist Regex.InfiniteMatchTimeout, wird keine Ausnahme ausgelöst.