Język

Regex.Match Metoda

Definicja

Wyszukuje ciąg wejściowy dla podciągów, który pasuje do wzorca wyrażenia regularnego i zwraca pierwsze wystąpienie jako pojedynczy Match obiekt.

Przeciążenia

Nazwa Opis
Match(String)

Wyszukuje określony ciąg wejściowy dla pierwszego wystąpienia wyrażenia regularnego określonego w konstruktorze Regex .

Match(String, Int32)

Wyszukuje ciąg wejściowy dla pierwszego wystąpienia wyrażenia regularnego, zaczynając od określonej pozycji początkowej w ciągu.

Match(String, String)

Wyszukuje określony ciąg wejściowy dla pierwszego wystąpienia określonego wyrażenia regularnego.

Match(String, Int32, Int32)

Wyszukuje ciąg wejściowy dla pierwszego wystąpienia wyrażenia regularnego, zaczynając od określonej pozycji początkowej i wyszukując tylko określoną liczbę znaków.

Match(String, String, RegexOptions)

Wyszukuje ciąg wejściowy dla pierwszego wystąpienia określonego wyrażenia regularnego przy użyciu określonych opcji dopasowania.

Match(String, String, RegexOptions, TimeSpan)

Wyszukuje ciąg wejściowy dla pierwszego wystąpienia określonego wyrażenia regularnego przy użyciu określonych opcji dopasowania i interwału limitu czasu.

Match(String)

Źródło:
Regex.Match.cs
Źródło:
Regex.Match.cs
Źródło:
Regex.Match.cs
Źródło:
Regex.Match.cs
Źródło:
Regex.Match.cs

Wyszukuje określony ciąg wejściowy dla pierwszego wystąpienia wyrażenia regularnego określonego w konstruktorze Regex .

public:
 System::Text::RegularExpressions::Match ^ Match(System::String ^ input);
public System.Text.RegularExpressions.Match Match(string input);
member this.Match : string -> System.Text.RegularExpressions.Match
Public Function Match (input As String) As Match

Parametry

input
String

Ciąg do wyszukiwania dopasowania.

Zwraca

Obiekt zawierający informacje o dopasowaniu.

Wyjątki

Parametr input ma wartość null.

Wystąpił limit czasu.

Uwagi

Metoda Match(String) zwraca pierwszy podciąg zgodny ze wzorcem wyrażenia regularnego w ciągu wejściowym.

Można określić, czy wzorzec wyrażenia regularnego został znaleziony w ciągu wejściowym, sprawdzając właściwość zwróconego MatchSuccess obiektu. Jeśli zostanie znalezione dopasowanie, właściwość zwróconego Match obiektu Value zawiera pasujący podciąg. Jeśli nie zostanie znalezione dopasowanie, jego wartość jest Empty.

Ta metoda zwraca pierwsze dopasowanie. Kolejne dopasowania można pobrać, wielokrotnie wywołując zwracaną metodę Match obiektu NextMatch(). Można również pobrać wszystkie dopasowania w jednym wywołaniu metody, wywołując metodę Matches(String).

Wyjątek RegexMatchTimeoutException jest zgłaszany, jeśli czas wykonywania pasującej operacji przekracza interwał limitu czasu określony przez konstruktora Regex(String, RegexOptions, TimeSpan). Jeśli nie ustawisz interwału przekroczenia limitu czasu podczas wywoływania konstruktora, wyjątek jest zgłaszany, jeśli operacja przekracza wartość limitu czasu ustanowioną dla domeny aplikacji, w której jest tworzony obiekt Regex. Jeśli w wywołaniu konstruktora Regex lub we właściwościach domeny aplikacji nie zdefiniowano limitu czasu lub jeśli wartość limitu czasu jest InfiniteMatchTimeout, nie jest zgłaszany żaden wyjątek.

Zobacz też

Dotyczy

Match(String, Int32)

Źródło:
Regex.Match.cs
Źródło:
Regex.Match.cs
Źródło:
Regex.Match.cs
Źródło:
Regex.Match.cs
Źródło:
Regex.Match.cs

Wyszukuje ciąg wejściowy dla pierwszego wystąpienia wyrażenia regularnego, zaczynając od określonej pozycji początkowej w ciągu.

public:
 System::Text::RegularExpressions::Match ^ Match(System::String ^ input, int startat);
public System.Text.RegularExpressions.Match Match(string input, int startat);
member this.Match : string * int -> System.Text.RegularExpressions.Match
Public Function Match (input As String, startat As Integer) As Match

Parametry

input
String

Ciąg do wyszukiwania dopasowania.

startat
Int32

Położenie znaku opartego na zerach, w którym należy rozpocząć wyszukiwanie.

Zwraca

Obiekt zawierający informacje o dopasowaniu.

Wyjątki

Parametr input ma wartość null.

startat wartość jest mniejsza niż zero lub większa niż długość input.

Wystąpił limit czasu.

Uwagi

Metoda Match(String, Int32) zwraca pierwszy podciąg zgodny ze wzorcem wyrażenia regularnego, zaczynając od lub po pozycji znaku startat w ciągu wejściowym. Wzorzec wyrażenia regularnego, dla którego metoda Match(String, Int32) wyszukuje, jest definiowany przez wywołanie jednego z konstruktorów klasy Regex. Aby uzyskać informacje o elementach języka używanych do tworzenia wzorca wyrażeń regularnych, zobacz Regular Expression Language — Quick Reference.

Parametr startat

Użyj parametru , startat aby określić położenie znaku, w którym rozpoczyna się wyszukiwanie. W wyszukiwaniu od lewej do prawej wszystkie dopasowania rozpoczynające się przed startat ciągiem są ignorowane. Aby rozpocząć od pozycji domyślnej, użyj Match(String) przeciążenia (lub przekaż wartość 0 dla wyszukiwania od lewej do prawej i input.Length wyszukiwania od prawej do lewej). Pomimo uruchomienia wyszukiwania na startatstronie , indeks każdego zwróconego dopasowania jest względny do początku ciągu.

Mimo że aparat wyrażeń regularnych nie zwraca żadnego dopasowania rozpoczynającego się przed startat, to jednak nie ignoruje on ciągu przed startat. Oznacza to, że asercje, takie jak kotwice lub asercje lookbehind , nadal mają zastosowanie do całego wejścia. Na przykład poniższy kod zawiera wzorzec z asercją lookbehind, która jest spełniona, mimo że występuje przed indeksem startat, czyli 5, w ciągu wejściowym.

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

Tip

  • Jeśli wzorzec zaczyna się od ^ kotwicy, startat jest większy niż 0, a wyrażenie regularne nie używa RegexOptions.Multilinemetody , żadne dopasowania nigdy nie zostaną znalezione, ponieważ są one ograniczone ^ , aby rozpocząć od indeksu 0.
  • \G jest zadowolony z startat. W związku z tym, jeśli chcesz ograniczyć dopasowanie, aby zaczynało się dokładnie na określonej pozycji znaku w ciągu, użyj jako kotwicy wyrażenia regularnego \G po lewej stronie dla wzorca od lewej do prawej. Ogranicza to dopasowanie, więc musi zaczynać się dokładnie od startat (lub, gdy wymagane jest wiele dopasowań, dopasowania muszą być ze sobą połączone).

Wyszukiwania od prawej do lewej

Wyszukiwanie od prawej do lewej, czyli gdy wzorzec wyrażenia regularnego jest skonstruowany z opcją RegexOptions.RightToLeft, zachowuje się w następujący sposób:

  • Skan porusza się w przeciwnym kierunku, a wzorzec jest dopasowany z tyłu (po prawej) do przodu (po lewej).
  • Domyślna pozycja początkowa to prawy koniec ciągu wejściowego.
  • Jeśli określono startat, skanowanie od prawej do lewej rozpoczyna się od znaku startat - 1 (nie startat).
  • Gdy kotwica \G jest określona na prawym końcu wzorca, ogranicza dopasowanie (pierwsze) do końca dokładnie na startat - 1.

Aby uzyskać więcej informacji na temat wyszukiwania od prawej do lewej, zobacz tryb od prawej do lewej.

Ustal, czy znaleziono dopasowanie

Można określić, czy wzorzec wyrażenia regularnego został znaleziony w ciągu wejściowym, sprawdzając wartość zwróconej właściwości Match obiektu Success. Jeśli zostanie znalezione dopasowanie, właściwość Match zwróconego obiektu Value zawiera podciąg z input, który pasuje do wzorca wyrażenia regularnego. Jeśli nie zostanie znalezione dopasowanie, jego wartość jest String.Empty.

Pierwsze lub wiele dopasowań

Ta metoda zwraca pierwszy podciąg znaleziony przez skanowanie input rozpoczynające się od startat pozycji (lub w przypadku wyszukiwań od prawej do lewej od startat - 1), które jest zgodne ze wzorcem wyrażenia regularnego. Kolejne dopasowania można pobrać, wielokrotnie wywołując zwracaną metodę Match obiektu Match.NextMatch. Można również pobrać wszystkie dopasowania w jednym wywołaniu, wywołując metodę Regex.Matches(String, Int32).

Wyjątki przekroczenia limitu czasu

Wyjątek RegexMatchTimeoutException jest zgłaszany, jeśli czas wykonywania pasującej operacji przekracza interwał limitu czasu określony przez konstruktora Regex.Regex(String, RegexOptions, TimeSpan). Jeśli nie ustawisz interwału przekroczenia limitu czasu podczas wywoływania konstruktora, wyjątek jest zgłaszany, jeśli operacja przekracza wartość limitu czasu ustanowioną dla domeny aplikacji, w której jest tworzony obiekt Regex. Jeśli w wywołaniu konstruktora Regex lub we właściwościach domeny aplikacji nie zdefiniowano limitu czasu lub jeśli wartość limitu czasu jest Regex.InfiniteMatchTimeout, nie jest zgłaszany żaden wyjątek.

Zobacz też

Dotyczy

Match(String, String)

Źródło:
Regex.Match.cs
Źródło:
Regex.Match.cs
Źródło:
Regex.Match.cs
Źródło:
Regex.Match.cs
Źródło:
Regex.Match.cs

Wyszukuje określony ciąg wejściowy dla pierwszego wystąpienia określonego wyrażenia regularnego.

public:
 static System::Text::RegularExpressions::Match ^ Match(System::String ^ input, System::String ^ pattern);
public static System.Text.RegularExpressions.Match Match(string input, string pattern);
static member Match : string * string -> System.Text.RegularExpressions.Match
Public Shared Function Match (input As String, pattern As String) As Match

Parametry

input
String

Ciąg do wyszukiwania dopasowania.

pattern
String

Wzorzec wyrażenia regularnego do dopasowania.

Zwraca

Obiekt zawierający informacje o dopasowaniu.

Wyjątki

Wystąpił błąd analizowania wyrażeń regularnych.

input lub pattern ma wartość null.

Wystąpił limit czasu.

Uwagi

Metoda statyczna Match(String, String) jest równoważna konstruowaniu Regex obiektu z określonym wzorcem i wywoływaniem metody wystąpienia Match(String) . Aparat wyrażeń regularnych buforuje wzorzec.

Można określić, czy wzorzec wyrażenia regularnego został znaleziony w ciągu wejściowym, sprawdzając właściwość zwróconego MatchSuccess obiektu. Jeśli zostanie znalezione dopasowanie, właściwość zwróconego Match obiektu Value zawiera pasujący podciąg. Jeśli nie zostanie znalezione dopasowanie, jego wartość jest Empty.

Kolejne dopasowania można pobrać, wielokrotnie wywołując zwracaną metodę Match obiektu NextMatch(). Można również pobrać wszystkie dopasowania w jednym wywołaniu, wywołując metodę Matches(String, String).

Notatki dotyczące wywoływania

Ta metoda powoduje przekroczenie limitu czasu po interwale równym domyślnej wartości limitu czasu domeny aplikacji, w której jest wywoływana. Jeśli dla domeny aplikacji nie zdefiniowano wartości limitu czasu, zostanie użyta wartość InfiniteMatchTimeout, która uniemożliwia przekroczenie limitu czasu metody. Zalecaną metodą statyczną pobierania dopasowania wzorca jest Match(String, String), która umożliwia ustawienie interwału limitu czasu.

Zobacz też

Dotyczy

Match(String, Int32, Int32)

Źródło:
Regex.Match.cs
Źródło:
Regex.Match.cs
Źródło:
Regex.Match.cs
Źródło:
Regex.Match.cs
Źródło:
Regex.Match.cs

Wyszukuje ciąg wejściowy dla pierwszego wystąpienia wyrażenia regularnego, zaczynając od określonej pozycji początkowej i wyszukując tylko określoną liczbę znaków.

public:
 System::Text::RegularExpressions::Match ^ Match(System::String ^ input, int beginning, int length);
public System.Text.RegularExpressions.Match Match(string input, int beginning, int length);
member this.Match : string * int * int -> System.Text.RegularExpressions.Match
Public Function Match (input As String, beginning As Integer, length As Integer) As Match

Parametry

input
String

Ciąg do wyszukiwania dopasowania.

beginning
Int32

Położenie znaku opartego na zera w ciągu wejściowym, które definiuje położenie najdalej po lewej stronie do wyszukania.

length
Int32

Liczba znaków w podciągu do uwzględnienia w wyszukiwaniu.

Zwraca

Obiekt zawierający informacje o dopasowaniu.

Wyjątki

Parametr input ma wartość null.

beginning wartość jest mniejsza niż zero lub większa niż długość input. -or- length jest mniejszy niż zero lub większy niż długość input. -or- beginning + length - 1 identyfikuje pozycję, która znajduje się poza zakresem input.

Wystąpił limit czasu.

Uwagi

Metoda Match(String, Int32, Int32) wyszukuje część zdefiniowaną input przez beginning parametry i length dla wzorca wyrażenia regularnego. beginning zawsze definiuje indeks najbardziej lewego znaku do uwzględnienia w wyszukiwaniu i length definiuje maksymalną liczbę znaków do wyszukania. Razem definiują zakres wyszukiwania. Zachowanie jest dokładnie takie, jakby dane wejściowe były skutecznie input.Substring(beginning, length), z tą różnicą, że indeks każdego dopasowania jest liowany względem początku .input Oznacza to, że wszelkie asercji kotwice lub asercji o zerowej szerokości na początku lub na końcu wzorca zachowują się tak, jakby nie było żadnych danych wejściowych poza tym zakresem.

Jeśli wyszukiwanie będzie kontynuowane od lewej do prawej (wartość domyślna), aparat wyrażeń regularnych wyszukuje znak w indeksie beginning do znaku w indeksie beginning + length — 1. Jeśli aparat wyrażeń regularnych został utworzone przy użyciu RightToLeft opcji , aparat wyszukuje znak w indeksiebeginning + length— 1 do znaku w indeksie .beginning

Ta metoda zwraca pierwsze dopasowanie znalezione w tym zakresie. Kolejne dopasowania można pobrać, wielokrotnie wywołując zwracaną metodę Match obiektu NextMatch().

Zobacz też

Dotyczy

Match(String, String, RegexOptions)

Źródło:
Regex.Match.cs
Źródło:
Regex.Match.cs
Źródło:
Regex.Match.cs
Źródło:
Regex.Match.cs
Źródło:
Regex.Match.cs

Wyszukuje ciąg wejściowy dla pierwszego wystąpienia określonego wyrażenia regularnego przy użyciu określonych opcji dopasowania.

public:
 static System::Text::RegularExpressions::Match ^ Match(System::String ^ input, System::String ^ pattern, System::Text::RegularExpressions::RegexOptions options);
public static System.Text.RegularExpressions.Match Match(string input, string pattern, System.Text.RegularExpressions.RegexOptions options);
static member Match : string * string * System.Text.RegularExpressions.RegexOptions -> System.Text.RegularExpressions.Match
Public Shared Function Match (input As String, pattern As String, options As RegexOptions) As Match

Parametry

input
String

Ciąg do wyszukiwania dopasowania.

pattern
String

Wzorzec wyrażenia regularnego do dopasowania.

options
RegexOptions

Bitowa kombinacja wartości wyliczenia, które zapewniają opcje dopasowania.

Zwraca

Obiekt zawierający informacje o dopasowaniu.

Wyjątki

Wystąpił błąd analizowania wyrażeń regularnych.

input lub pattern ma wartość null.

options nie jest prawidłową kombinacją RegexOptions bitową wartości.

Wystąpił limit czasu.

Uwagi

Metoda statyczna Match(String, String, RegexOptions) jest równoważna konstruowaniu Regex obiektu za pomocą konstruktora Regex(String, RegexOptions) i wywoływaniu metody wystąpienia Match(String) .

Można określić, czy wzorzec wyrażenia regularnego został znaleziony w ciągu wejściowym, sprawdzając właściwość zwróconego MatchSuccess obiektu. Kolejne dopasowania można pobrać, wielokrotnie wywołując zwracaną metodę Match obiektu NextMatch(). Można również pobrać wszystkie dopasowania w jednym wywołaniu, wywołując metodę Matches(String, String, RegexOptions).

Notatki dotyczące wywoływania

Ta metoda powoduje przekroczenie limitu czasu po interwale równym domyślnej wartości limitu czasu domeny aplikacji, w której jest wywoływana. Jeśli dla domeny aplikacji nie zdefiniowano wartości limitu czasu, zostanie użyta wartość InfiniteMatchTimeout, która uniemożliwia przekroczenie limitu czasu metody. Zalecaną metodą statyczną pobierania dopasowania wzorca jest Match(String, String), która umożliwia ustawienie interwału limitu czasu.

Zobacz też

Dotyczy

Match(String, String, RegexOptions, TimeSpan)

Źródło:
Regex.Match.cs
Źródło:
Regex.Match.cs
Źródło:
Regex.Match.cs
Źródło:
Regex.Match.cs
Źródło:
Regex.Match.cs

Wyszukuje ciąg wejściowy dla pierwszego wystąpienia określonego wyrażenia regularnego przy użyciu określonych opcji dopasowania i interwału limitu czasu.

public:
 static System::Text::RegularExpressions::Match ^ Match(System::String ^ input, System::String ^ pattern, System::Text::RegularExpressions::RegexOptions options, TimeSpan matchTimeout);
public static System.Text.RegularExpressions.Match Match(string input, string pattern, System.Text.RegularExpressions.RegexOptions options, TimeSpan matchTimeout);
static member Match : string * string * System.Text.RegularExpressions.RegexOptions * TimeSpan -> System.Text.RegularExpressions.Match
Public Shared Function Match (input As String, pattern As String, options As RegexOptions, matchTimeout As TimeSpan) As Match

Parametry

input
String

Ciąg do wyszukiwania dopasowania.

pattern
String

Wzorzec wyrażenia regularnego do dopasowania.

options
RegexOptions

Bitowa kombinacja wartości wyliczenia, które zapewniają opcje dopasowania.

matchTimeout
TimeSpan

Interwał przekroczenia limitu czasu lub InfiniteMatchTimeout wskazujący, że metoda nie powinna upłynął limit czasu.

Zwraca

Obiekt zawierający informacje o dopasowaniu.

Wyjątki

Wystąpił błąd analizowania wyrażeń regularnych.

input lub pattern ma wartość null.

options nie jest prawidłową kombinacją RegexOptions bitową wartości. -or- matchTimeout jest ujemny, zero lub większy niż około 24 dni.

Wystąpił limit czasu.

Uwagi

Metoda statyczna Match(String, String, RegexOptions, TimeSpan) jest równoważna konstruowaniu Regex obiektu za pomocą konstruktora Regex(String, RegexOptions, TimeSpan) i wywoływaniu metody wystąpienia Match(String) .

Można określić, czy wzorzec wyrażenia regularnego został znaleziony w ciągu wejściowym, sprawdzając właściwość zwróconego MatchSuccess obiektu. Kolejne dopasowania można pobrać, wielokrotnie wywołując zwracaną metodę Match obiektu NextMatch().

Parametr matchTimeout określa, jak długo metoda dopasowania wzorca powinna spróbować znaleźć dopasowanie przed upływem limitu czasu. Ustawienie interwału limitu czasu zapobiega wyrażeniom regularnym, które polegają na nadmiernym wycofywaniu, aby przestać odpowiadać podczas przetwarzania danych wejściowych, które zawierają niemal dopasowania. Jeśli w tym interwale czasu nie znaleziono dopasowania, metoda zgłasza RegexMatchTimeoutException wyjątek. matchTimeout zastępuje dowolną domyślną wartość limitu czasu zdefiniowaną dla domeny aplikacji, w której jest wykonywana metoda.

Notatki dotyczące wywoływania

Zalecamy ustawienie parametru matchTimeout na odpowiednią wartość, na przykład dwie sekundy. Jeśli wyłączysz limity czasu, określając InfiniteMatchTimeoutwartość , aparat wyrażeń regularnych zapewnia nieco lepszą wydajność. Należy jednak wyłączyć limity czasu tylko w następujących warunkach:

  • Gdy dane wejściowe przetwarzane przez wyrażenie regularne pochodzą ze znanego i zaufanego źródła lub składa się z tekstu statycznego. Wyklucza to tekst, który został dynamicznie wprowadzany przez użytkowników.

  • Gdy wzorzec wyrażenia regularnego został dokładnie przetestowany w celu zapewnienia, że efektywnie obsługuje dopasowania, niezgodne i bliskie dopasowania.

  • Gdy wzorzec wyrażenia regularnego nie zawiera żadnych elementów języka, które są znane, aby powodować nadmierne wycofywanie podczas przetwarzania niemal zgodnego.

Zobacz też

Dotyczy