System.Text.RegularExpressions.Regex.Match-Methode

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 vor der startat Zeichenfolge 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 der Index einer zurückgegebenen Übereinstimmung beginnt startat, ist der Index relativ zum Anfang der Zeichenfolge.

Obwohl das Modul für reguläre Ausdrücke vorher keine Übereinstimmung startatzurückgibt, ignoriert es die Zeichenfolge vor startat. Dies bedeutet, dass Assertionen wie Anker oder Lookbehind-Assertionen für die Eingabe als Ganzes weiterhin gelten. Der folgende Code enthält z. B. ein Muster mit einer Lookbehind-Assertion, die zufrieden ist, obwohl sie vor dem startat Index von 5 in der Eingabezeichenfolge 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: {0}", match.Value);
        }
    }
}

// This code prints the following output:
// Match found: 98052

Tipp

  • Wenn ein Muster mit dem ^ Anker beginnt, aber startat größer als 0 ist, werden in einer einzeiligen Suche keine Übereinstimmungen gefunden, da sie an ^ den Anfang bei Index 0 beschränkt sind.
  • Der \G Anker ist zufrieden bei startat. Wenn Sie daher eine Übereinstimmung so einschränken möchten, dass sie genau an einer bestimmten Zeichenposition in der Zeichenfolge beginnt, verankern Sie den regulären Ausdruck mit einem \G Links-nach-rechts-Muster. Dadurch wird die Übereinstimmung so eingeschränkt, dass sie genau bei startat (oder, wenn mehrere Übereinstimmungen gewünscht werden) beginnen müssen, sodass die Übereinstimmungen zusammenhängend 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 startat angegeben, beginnt der Rechts-nach-links-Scan mit dem Zeichen bei startat - 1 (nicht startat).
  • Wenn der \G Anker am rechten Ende eines Musters angegeben wird, wird die (erste) Übereinstimmung so beschränkt, dass sie genau bei startat - 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 Eigenschaft des zurückgegebenen Match Objekts die Teilzeichenfolge, aus input der das Muster des regulären Ausdrucks Value übereinstimmt. Wenn keine Übereinstimmung gefunden wird, lautet String.Emptyder Wert .

Erste oder mehrere Übereinstimmungen

Diese Methode gibt die erste Teilzeichenfolge zurück, die an oder nach der startat Zeichenposition input gefunden wurde, die mit dem Muster für reguläre Ausdrücke übereinstimmt. Sie können nachfolgende Übereinstimmungen abrufen, indem Sie die Methode des Match.NextMatch zurückgegebenen Match Objekts 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 für die Anwendung festgelegten Timeoutwert überschreitet Standard in dem das Regex Objekt erstellt wird. Wenn kein Timeout im Regex Konstruktoraufruf oder in der Anwendung definiert ist Standard Eigenschaften oder wenn der Timeoutwert istRegex.InfiniteMatchTimeout, wird keine Ausnahme ausgelöst.