Udostępnij za pośrednictwem


Regex.Match Metoda

Definicja

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

Przeciążenia

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

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

input jest null.

Wystąpił limit czasu. Aby uzyskać więcej informacji na temat limitów czasu, zobacz sekcję Uwagi.

Przykłady

W poniższym przykładzie wzorzec wyrażenia regularnego znajduje dopasowania w ciągu, a następnie wyświetla listę dopasowanych grup, przechwytywania i przechwytywania pozycji.

#using <System.dll>

using namespace System;
using namespace System::Text::RegularExpressions;
void main()
{
   
   String^ text = "One car red car blue car";
   String^ pat = "(\\w+)\\s+(car)";
   
   // Compile the regular expression.
   Regex^ r = gcnew Regex( pat,RegexOptions::IgnoreCase );
   
   // Match the regular expression pattern against a text string.
   Match^ m = r->Match(text);
   int matchCount = 0;
   while ( m->Success )
   {
      Console::WriteLine( "Match{0}", ++matchCount );
      for ( int i = 1; i <= 2; i++ )
      {
         Group^ g = m->Groups[ i ];
         Console::WriteLine( "Group{0}='{1}'", i, g );
         CaptureCollection^ cc = g->Captures;
         for ( int j = 0; j < cc->Count; j++ )
         {
            Capture^ c = cc[ j ];
            System::Console::WriteLine( "Capture{0}='{1}', Position={2}", j, c, c->Index );
         }
      }
      m = m->NextMatch();
   }
}  
// This example displays the following output:
//       Match1
//       Group1='One'
//       Capture0='One', Position=0
//       Group2='car'
//       Capture0='car', Position=4
//       Match2
//       Group1='red'
//       Capture0='red', Position=8
//       Group2='car'
//       Capture0='car', Position=12
//       Match3
//       Group1='blue'
//       Capture0='blue', Position=16
//       Group2='car'
//       Capture0='car', Position=21
using System;
using System.Text.RegularExpressions;

class Example
{
   static void Main()
   {
      string text = "One car red car blue car";
      string pat = @"(\w+)\s+(car)";

      // Instantiate the regular expression object.
      Regex r = new Regex(pat, RegexOptions.IgnoreCase);

      // Match the regular expression pattern against a text string.
      Match m = r.Match(text);
      int matchCount = 0;
      while (m.Success)
      {
         Console.WriteLine("Match"+ (++matchCount));
         for (int i = 1; i <= 2; i++)
         {
            Group g = m.Groups[i];
            Console.WriteLine("Group"+i+"='" + g + "'");
            CaptureCollection cc = g.Captures;
            for (int j = 0; j < cc.Count; j++)
            {
               Capture c = cc[j];
               System.Console.WriteLine("Capture"+j+"='" + c + "', Position="+c.Index);
            }
         }
         m = m.NextMatch();
      }
   }
}
// This example displays the following output:
//       Match1
//       Group1='One'
//       Capture0='One', Position=0
//       Group2='car'
//       Capture0='car', Position=4
//       Match2
//       Group1='red'
//       Capture0='red', Position=8
//       Group2='car'
//       Capture0='car', Position=12
//       Match3
//       Group1='blue'
//       Capture0='blue', Position=16
//       Group2='car'
//       Capture0='car', Position=21
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim text As String = "One car red car blue car"
      Dim pattern As String = "(\w+)\s+(car)"

      ' Instantiate the regular expression object.
      Dim r As Regex = new Regex(pattern, RegexOptions.IgnoreCase)

      ' Match the regular expression pattern against a text string.
      Dim m As Match = r.Match(text)
      Dim matchcount as Integer = 0
      Do While m.Success
         matchCount += 1
         Console.WriteLine("Match" & (matchCount))
         Dim i As Integer
         For i = 1 to 2
            Dim g as Group = m.Groups(i)
            Console.WriteLine("Group" & i & "='" & g.ToString() & "'")
            Dim cc As CaptureCollection = g.Captures
            Dim j As Integer 
            For j = 0 to cc.Count - 1
              Dim c As Capture = cc(j)
               Console.WriteLine("Capture" & j & "='" & c.ToString() _
                  & "', Position=" & c.Index)
            Next 
         Next 
         m = m.NextMatch()
      Loop
   End Sub
End Module
' This example displays the following output:
'       Match1
'       Group1='One'
'       Capture0='One', Position=0
'       Group2='car'
'       Capture0='car', Position=4
'       Match2
'       Group1='red'
'       Capture0='red', Position=8
'       Group2='car'
'       Capture0='car', Position=12
'       Match3
'       Group1='blue'
'       Capture0='blue', Position=16
'       Group2='car'
'       Capture0='car', Position=21

Wzorzec wyrażenia regularnego (\w+)\s+(car) pasuje do wystąpień słowa "car" wraz ze słowem poprzedzającym go. Jest on interpretowany tak, jak pokazano w poniższej tabeli.

Deseń Opis
(\w+) Dopasuj co najmniej jeden znak słowa. Jest to pierwsza grupa przechwytywania.
\s+ Dopasuj co najmniej jeden znak odstępu.
(samochód) Dopasuj ciąg literału "car". Jest to druga grupa przechwytywania.

Uwagi

Metoda Match(String) zwraca pierwszy podciąg zgodny ze wzorcem wyrażenia regularnego w ciągu wejściowym. Aby uzyskać informacje o elementach języka używanych do tworzenia wzorca wyrażeń regularnych, zobacz Regular Expression Language — Quick Reference.

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 Success obiektu Match. Jeśli zostanie znalezione dopasowanie, zwrócona właściwość Value obiektu Match zawiera podciąg input zgodny ze wzorcem wyrażenia regularnego. Jeśli nie zostanie znalezione dopasowanie, jego wartość jest String.Empty.

Ta metoda zwraca pierwszy podciąg w input zgodny ze wzorcem wyrażenia regularnego. Kolejne dopasowania można pobrać, wielokrotnie wywołując zwracaną metodę Match.NextMatch obiektu Match. Wszystkie dopasowania można również pobrać w jednym wywołaniu metody, wywołując metodę Regex.Matches(String).

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, Int32)

Ź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

input jest null.

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

Wystąpił limit czasu. Aby uzyskać więcej informacji na temat limitów czasu, zobacz sekcję Uwagi.

Uwagi

Aby uzyskać więcej informacji na temat tego interfejsu API, zobacz uwagi dotyczące interfejsu API uzupełniającego dlaRegex.Match.

Zobacz też

Dotyczy

Match(String, String)

Ź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 jest null.

Wystąpił limit czasu. Aby uzyskać więcej informacji na temat limitów czasu, zobacz sekcję Uwagi.

Przykłady

Poniższy przykład wywołuje metodę Match(String, String), aby znaleźć pierwsze słowo zawierające co najmniej jeden znak z, a następnie wywołuje metodę Match.NextMatch w celu znalezienia dodatkowych dopasowań.

using System;
using System.Text.RegularExpressions;

namespace Examples
{
    public class Example
    {
        public static void Main()
        {
            string input = "ablaze beagle choral dozen elementary fanatic " +
                           "glaze hunger inept jazz kitchen lemon minus " +
                           "night optical pizza quiz restoration stamina " +
                           "train unrest vertical whiz xray yellow zealous";
            string pattern = @"\b\w*z+\w*\b";
            Match m = Regex.Match(input, pattern);
            while (m.Success)
            {
                Console.WriteLine("'{0}' found at position {1}", m.Value, m.Index);
                m = m.NextMatch();
            }
        }
    }
}

// The example displays the following output:
//    'ablaze' found at position 0
//    'dozen' found at position 21
//    'glaze' found at position 46
//    'jazz' found at position 65
//    'pizza' found at position 104
//    'quiz' found at position 110
//    'whiz' found at position 157
//    'zealous' found at position 174
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim input As String = "ablaze beagle choral dozen elementary fanatic " +
                            "glaze hunger inept jazz kitchen lemon minus " +
                            "night optical pizza quiz restoration stamina " +
                            "train unrest vertical whiz xray yellow zealous"
      Dim pattern As String = "\b\w*z+\w*\b"
      Dim m As Match = Regex.Match(input, pattern)
      Do While m.Success 
         Console.WriteLine("'{0}' found at position {1}", m.Value, m.Index)
         m = m.NextMatch()
      Loop                      
   End Sub
End Module
' The example displays the following output:
    'ablaze' found at position 0
    'dozen' found at position 21
    'glaze' found at position 46
    'jazz' found at position 65
    'pizza' found at position 104
    'quiz' found at position 110
    'whiz' found at position 157
    'zealous' found at position 174

Wzorzec wyrażenia regularnego \b\w*z+\w*\b jest interpretowany, jak pokazano w poniższej tabeli.

Deseń Opis
\b Rozpocznij dopasowanie na granicy słowa.
\w* Dopasuj zero, co najmniej jeden znak słowa.
z+ Dopasuj co najmniej jedno wystąpienie znaku z.
\w* Dopasuj zero, co najmniej jeden znak słowa.
\b Zakończ dopasowanie na granicy słowa.

Uwagi

Metoda Match(String, String) zwraca pierwszy podciąg zgodny ze wzorcem wyrażenia regularnego w ciągu wejściowym. Aby uzyskać informacje o elementach języka używanych do tworzenia wzorca wyrażeń regularnych, zobacz Regular Expression Language — Quick Reference.

Statyczna metoda Match(String, String) jest równoważna konstruowaniu obiektu Regex z określonym wzorcem wyrażenia regularnego i wywoływaniem metody Match(String) wystąpienia. W tym przypadku aparat wyrażeń regularnych buforuje wzorzec wyrażenia regularnego.

Parametr pattern składa się z elementów języka wyrażeń regularnych, które symbolicznie opisują ciąg do dopasowania. Aby uzyskać więcej informacji na temat wyrażeń regularnych, zobacz .NET Regular Expressions and Regular Expression Language — Quick Reference.

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 Success obiektu Match. Jeśli zostanie znalezione dopasowanie, zwrócona właściwość Value obiektu Match zawiera podciąg input zgodny ze wzorcem wyrażenia regularnego. Jeśli nie zostanie znalezione dopasowanie, jego wartość jest String.Empty.

Ta metoda zwraca pierwszy podciąg w input zgodny ze wzorcem wyrażenia regularnego. Kolejne dopasowania można pobrać, wielokrotnie wywołując zwracaną metodę Match.NextMatch obiektu Match. Wszystkie dopasowania można również pobrać w jednym wywołaniu metody, wywołując metodę Regex.Matches(String, String).

Wyjątek RegexMatchTimeoutException jest zgłaszany, jeśli czas wykonywania pasującej operacji przekracza interwał limitu czasu określony dla domeny aplikacji, w której jest wywoływana metoda. Jeśli w 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.

Uwagi 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), co pozwala ustawić interwał 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

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

input jest null.

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

-lub-

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

-lub-

beginning + length -1 identyfikuje pozycję, która znajduje się poza zakresem input.

Wystąpił limit czasu. Aby uzyskać więcej informacji na temat limitów czasu, zobacz sekcję Uwagi.

Uwagi

Metoda Match(String, Int32, Int32) zwraca pierwszy podciąg zgodny ze wzorcem wyrażenia regularnego w części ciągu wejściowego. Aby uzyskać informacje o elementach języka używanych do tworzenia wzorca wyrażeń regularnych, zobacz Regular Expression Language — Quick Reference.

Wzorzec wyrażenia regularnego, dla którego metoda Match(String, Int32, Int32) wyszukuje, jest definiowany przez wywołanie jednego z konstruktorów klasy Regex. Aby uzyskać więcej informacji na temat elementów, które mogą tworzyć wzorzec wyrażeń regularnych, zobacz Regular Expression Language — Quick Reference.

Metoda Match(String, Int32, Int32) wyszukuje część input zdefiniowaną przez parametry beginning i length dla wzorca wyrażenia regularnego. beginning zawsze definiuje indeks najbardziej lewego znaku do uwzględnienia w wyszukiwaniu, a length definiuje maksymalną liczbę znaków do wyszukania. Razem definiują zakres wyszukiwania. Zachowanie jest dokładnie tak, jakby input była 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 aseracje o zerowej szerokości lub na początku lub na końcu wzorca zachowują się tak, jakby nie było input poza tym zakresem. Na przykład kotwice ^, \Gi \A będą zadowalające w beginning i $ i \z będą zadowalające w beginning + length - 1.

Jeśli wyszukiwanie będzie kontynuowane od lewej do prawej (ustawienie domyślne), aparat wyrażeń regularnych wyszukuje znak w indeksie beginning do znaku w indeksie beginning + length - 1. Jeśli aparat wyrażeń regularnych został utworzone za pomocą opcji RegexOptions.RightToLeft, aby wyszukiwanie było kontynuowane od prawej do lewej, aparat wyrażeń regularnych wyszukuje znak w indeksie beginning + 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.NextMatch obiektu Match.

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 Success obiektu Match. Jeśli zostanie znalezione dopasowanie, zwrócona właściwość Value obiektu Match zawiera podciąg input zgodny ze wzorcem wyrażenia regularnego. Jeśli nie zostanie znalezione dopasowanie, jego wartość jest String.Empty.

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 wartości limitu czasu podczas wywoływania konstruktora, wyjątek zostanie zgłoszony, jeśli operacja przekroczy 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, RegexOptions)

Ź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 jest null.

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

Wystąpił limit czasu. Aby uzyskać więcej informacji na temat limitów czasu, zobacz sekcję Uwagi.

Przykłady

W poniższym przykładzie zdefiniowano wyrażenie regularne, które pasuje do wyrazów rozpoczynających się literą "a". Używa ona opcji RegexOptions.IgnoreCase, aby upewnić się, że wyrażenie regularne lokalizuje wyrazy rozpoczynające się zarówno wielkimi literami "a", jak i małymi literami "a".

using System;
using System.Text.RegularExpressions;

namespace Examples
{
    public class Example2
    {
        public static void Main()
        {
            string pattern = @"\ba\w*\b";
            string input = "An extraordinary day dawns with each new day.";
            Match m = Regex.Match(input, pattern, RegexOptions.IgnoreCase);
            if (m.Success)
                Console.WriteLine("Found '{0}' at position {1}.", m.Value, m.Index);
        }
    }
}

// The example displays the following output:
//        Found 'An' at position 0.
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "\ba\w*\b"
      Dim input As String = "An extraordinary day dawns with each new day."
      Dim m As Match = Regex.Match(input, pattern, RegexOptions.IgnoreCase)
      If m.Success Then
         Console.WriteLine("Found '{0}' at position {1}.", m.Value, m.Index)
      End If
   End Sub
End Module
' The example displays the following output:
'       Found 'An' at position 0.

Wzorzec wyrażenia regularnego \ba\w*\b jest interpretowany, jak pokazano w poniższej tabeli.

Deseń Opis
\b Rozpocznij dopasowanie na granicy słowa.
a Dopasuj znak "a".
\w* Dopasuj zero, co najmniej jeden znak słowa.
\b Zakończ dopasowanie na granicy słowa.

Uwagi

Metoda Match(String, String, RegexOptions) zwraca pierwszy podciąg zgodny ze wzorcem wyrażenia regularnego w ciągu wejściowym. Aby uzyskać informacje o elementach języka używanych do tworzenia wzorca wyrażeń regularnych, zobacz Regular Expression Language — Quick Reference.

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

Parametr pattern składa się z elementów języka wyrażeń regularnych, które symbolicznie opisują ciąg do dopasowania. Aby uzyskać więcej informacji na temat wyrażeń regularnych, zobacz .NET Regular Expressions and Regular Expression Language — Quick Reference.

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 Success obiektu Match. Jeśli zostanie znalezione dopasowanie, zwrócona właściwość Value obiektu Match zawiera podciąg input zgodny ze wzorcem wyrażenia regularnego. Jeśli nie zostanie znalezione dopasowanie, jego wartość jest String.Empty.

Ta metoda zwraca pierwszy podciąg znaleziony w input zgodny ze wzorcem wyrażenia regularnego. Kolejne dopasowania można pobrać, wielokrotnie wywołując zwracaną metodę NextMatch obiektu Match. Wszystkie dopasowania można również pobrać w jednym wywołaniu metody, wywołując metodę Regex.Matches(String, String, RegexOptions).

Wyjątek RegexMatchTimeoutException jest zgłaszany, jeśli czas wykonywania pasującej operacji przekracza interwał limitu czasu określony dla domeny aplikacji, w której jest wywoływana metoda. Jeśli w 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.

Uwagi 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), co pozwala ustawić interwał 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

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ł 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 jest null.

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

-lub-

matchTimeout jest ujemna, zero lub większa niż około 24 dni.

Wystąpił limit czasu. Aby uzyskać więcej informacji na temat limitów czasu, zobacz sekcję Uwagi.

Uwagi

Metoda Match(String, String, RegexOptions, TimeSpan) zwraca pierwszy podciąg zgodny ze wzorcem wyrażenia regularnego w ciągu wejściowym. Aby uzyskać informacje o elementach języka używanych do tworzenia wzorca wyrażeń regularnych, zobacz Regular Expression Language — Quick Reference.

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

Parametr pattern składa się z elementów języka wyrażeń regularnych, które symbolicznie opisują ciąg do dopasowania. Aby uzyskać więcej informacji na temat wyrażeń regularnych, zobacz .NET Regular Expressions and Regular Expression Language — Quick Reference.

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 Success obiektu Match. Jeśli zostanie znalezione dopasowanie, zwrócona właściwość Value obiektu Match zawiera podciąg input zgodny ze wzorcem wyrażenia regularnego. Jeśli nie zostanie znalezione dopasowanie, jego wartość jest String.Empty.

Ta metoda zwraca pierwszy podciąg znaleziony w input zgodny ze wzorcem wyrażenia regularnego. Kolejne dopasowania można pobrać, wielokrotnie wywołując zwracaną metodę NextMatch obiektu Match. Wszystkie dopasowania można również pobrać w jednym wywołaniu metody, wywołując metodę Regex.Matches(String, String, RegexOptions).

Parametr matchTimeout określa, jak długo metoda dopasowania wzorca powinna pró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. Aby uzyskać więcej informacji, zobacz Best Practices for Regular Expressions and Backtracking. Jeśli w tym interwale czasu nie znaleziono dopasowania, metoda zgłasza wyjątek RegexMatchTimeoutException. matchTimeout zastępuje domyślną wartość limitu czasu zdefiniowaną dla domeny aplikacji, w której jest wykonywana metoda.

Uwagi 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 InfiniteMatchTimeout, 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