Поделиться через


Regex.Match Метод

Определение

Выполняет поиск входной строки для подстроки, которая соответствует шаблону регулярного выражения и возвращает первое вхождение в виде одного объекта Match.

Перегрузки

Match(String)

Выполняет поиск указанной входной строки для первого вхождения регулярного выражения, указанного в конструкторе Regex.

Match(String, Int32)

Выполняет поиск входной строки для первого вхождения регулярного выражения, начиная с указанной начальной позиции в строке.

Match(String, String)

Выполняет поиск указанной входной строки для первого вхождения указанного регулярного выражения.

Match(String, Int32, Int32)

Выполняет поиск входной строки для первого вхождения регулярного выражения, начиная с указанной начальной позиции и выполняя поиск только указанного числа символов.

Match(String, String, RegexOptions)

Выполняет поиск входной строки для первого вхождения указанного регулярного выражения с помощью указанных параметров сопоставления.

Match(String, String, RegexOptions, TimeSpan)

Выполняет поиск входной строки для первого вхождения указанного регулярного выражения, используя указанные параметры сопоставления и интервал времени ожидания.

Match(String)

Исходный код:
Regex.Match.cs
Исходный код:
Regex.Match.cs
Исходный код:
Regex.Match.cs

Выполняет поиск указанной входной строки для первого вхождения регулярного выражения, указанного в конструкторе 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

Параметры

input
String

Строка для поиска совпадения.

Возвращаемое значение

Объект, содержащий сведения о совпадении.

Исключения

input null.

Произошло время ожидания. Дополнительные сведения о времени ожидания см. в разделе "Примечания".

Примеры

В следующем примере отображаются совпадения шаблонов регулярного выражения в строке, а затем перечислены соответствующие группы, записи и позиции записи.

#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

Шаблон регулярного выражения (\w+)\s+(car) соответствует вхождениям слова "car" вместе с словом, предшествующим ему. Он интерпретируется, как показано в следующей таблице.

Рисунок Описание
(\w+) Соответствует одному или нескольким символам слова. Это первая группа захвата.
\s+ Соответствует одному или нескольким символам пробела.
(автомобиль) Соответствует литеральной строке "car". Это вторая группа захвата.

Комментарии

Метод Match(String) возвращает первую подстроку, которая соответствует шаблону регулярного выражения в входной строке. Сведения о элементах языка, используемых для создания шаблона регулярного выражения, см. в разделе языке регулярных выражений — краткий справочник.

Вы можете определить, найден ли шаблон регулярного выражения в входной строке, проверив значение возвращаемого свойства Match объекта Success. Если совпадение найдено, возвращаемое свойство Match объекта Value содержит подстроку из input, которая соответствует шаблону регулярного выражения. Если совпадение не найдено, его значение равно String.Empty.

Этот метод возвращает первую подстроку в input, которая соответствует шаблону регулярного выражения. Последующие совпадения можно получить путем многократного вызова возвращаемого метода Match объекта Match.NextMatch. Вы также можете получить все совпадения в одном вызове метода, вызвав метод Regex.Matches(String).

Исключение RegexMatchTimeoutException возникает, если время выполнения операции сопоставления превышает интервал времени ожидания, указанный конструктором Regex.Regex(String, RegexOptions, TimeSpan). Если при вызове конструктора не задан интервал времени ожидания, исключение создается, если операция превышает любое время ожидания, установленное для домена приложения, в котором создается объект Regex. Если время ожидания не определено в вызове конструктора Regex или в свойствах домена приложения или если значение времени ожидания Regex.InfiniteMatchTimeout, исключение не возникает.

См. также раздел

Применяется к

Match(String, Int32)

Исходный код:
Regex.Match.cs
Исходный код:
Regex.Match.cs
Исходный код:
Regex.Match.cs

Выполняет поиск входной строки для первого вхождения регулярного выражения, начиная с указанной начальной позиции в строке.

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

Параметры

input
String

Строка для поиска совпадения.

startat
Int32

Отсчитываемая от нуля позиция символа, с которой следует запустить поиск.

Возвращаемое значение

Объект, содержащий сведения о совпадении.

Исключения

input null.

startat меньше нуля или больше длины input.

Произошло время ожидания. Дополнительные сведения о времени ожидания см. в разделе "Примечания".

Комментарии

Дополнительные сведения об этом API см. в дополнительных примечаниях API для Regex.Match.

См. также раздел

Применяется к

Match(String, String)

Исходный код:
Regex.Match.cs
Исходный код:
Regex.Match.cs
Исходный код:
Regex.Match.cs

Выполняет поиск указанной входной строки для первого вхождения указанного регулярного выражения.

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

Параметры

input
String

Строка для поиска совпадения.

pattern
String

Шаблон регулярного выражения, соответствующий.

Возвращаемое значение

Объект, содержащий сведения о совпадении.

Исключения

Произошла ошибка синтаксического анализа регулярных выражений.

input или patternnull.

Произошло время ожидания. Дополнительные сведения о времени ожидания см. в разделе "Примечания".

Примеры

В следующем примере вызывается метод Match(String, String) для поиска первого слова, содержащего по крайней мере один символ z, а затем вызывает метод Match.NextMatch для поиска дополнительных совпадений.

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

Шаблон регулярного выражения \b\w*z+\w*\b интерпретируется, как показано в следующей таблице.

Рисунок Описание
\b Начните совпадение с границы слова.
\w* Соответствует нулю, одному или нескольким символам слова.
z+ Соответствует одному или нескольким вхождениям символа z.
\w* Соответствует нулю, одному или нескольким символам слова.
\b Завершите совпадение по границе слова.

Комментарии

Метод Match(String, String) возвращает первую подстроку, которая соответствует шаблону регулярного выражения в входной строке. Сведения о элементах языка, используемых для создания шаблона регулярного выражения, см. в разделе языке регулярных выражений — краткий справочник.

Статический метод Match(String, String) эквивалентен созданию объекта Regex с указанным шаблоном регулярного выражения и вызовом метода Match(String) экземпляра. В этом случае обработчик регулярных выражений кэширует шаблон регулярного выражения.

Параметр pattern состоит из элементов языка регулярных выражений, которые символично описывают строку для сопоставления. Дополнительные сведения о регулярных выражениях см. в регулярных выражений .NET и языке регулярных выражений — краткий справочник.

Вы можете определить, найден ли шаблон регулярного выражения в входной строке, проверив значение возвращаемого свойства Match объекта Success. Если совпадение найдено, возвращаемое свойство Match объекта Value содержит подстроку из input, которая соответствует шаблону регулярного выражения. Если совпадение не найдено, его значение равно String.Empty.

Этот метод возвращает первую подстроку в input, которая соответствует шаблону регулярного выражения. Последующие совпадения можно получить путем многократного вызова возвращаемого метода Match объекта Match.NextMatch. Вы также можете получить все совпадения в одном вызове метода, вызвав метод Regex.Matches(String, String).

Исключение RegexMatchTimeoutException возникает, если время выполнения операции сопоставления превышает интервал времени ожидания, указанный для домена приложения, в котором вызывается метод. Если время ожидания не определено в свойствах домена приложения или если значение времени ожидания Regex.InfiniteMatchTimeout, исключение не возникает.

Примечания для тех, кто вызывает этот метод

Этот метод истекает после интервала, равного значению времени ожидания по умолчанию домена приложения, в котором он вызывается. Если значение времени ожидания не определено для домена приложения, используется значение InfiniteMatchTimeout, которое предотвращает истечение времени ожидания метода. Рекомендуемый статический метод для получения сопоставления шаблонов — Match(String, String), что позволяет задать интервал времени ожидания.

См. также раздел

Применяется к

Match(String, Int32, Int32)

Исходный код:
Regex.Match.cs
Исходный код:
Regex.Match.cs
Исходный код:
Regex.Match.cs

Выполняет поиск входной строки для первого вхождения регулярного выражения, начиная с указанной начальной позиции и выполняя поиск только указанного числа символов.

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

Параметры

input
String

Строка для поиска совпадения.

beginning
Int32

Отсчитываемое от нуля положение символов во входной строке, определяющее самую левую позицию для поиска.

length
Int32

Количество символов в подстроке, включаемых в поиск.

Возвращаемое значение

Объект, содержащий сведения о совпадении.

Исключения

input null.

beginning меньше нуля или больше длины input.

-или-

length меньше нуля или больше длины input.

-или-

beginning + length -1 определяет позицию, которая находится за пределами диапазона input.

Произошло время ожидания. Дополнительные сведения о времени ожидания см. в разделе "Примечания".

Комментарии

Метод Match(String, Int32, Int32) возвращает первую подстроку, которая соответствует шаблону регулярного выражения в части входной строки. Сведения о элементах языка, используемых для создания шаблона регулярного выражения, см. в разделе языке регулярных выражений — краткий справочник.

Шаблон регулярного выражения, для которого выполняется поиск Match(String, Int32, Int32) метода, определяется вызовом одного из конструкторов классов Regex. Дополнительные сведения об элементах, которые могут формировать шаблон регулярного выражения, см. в разделе язык регулярных выражений — краткий справочник.

Метод Match(String, Int32, Int32) выполняет поиск части input, определенной beginning и параметрами length для шаблона регулярного выражения. beginning всегда определяет индекс самого левого символа, включаемого в поиск, и length определяет максимальное количество символов для поиска. Вместе они определяют диапазон поиска. Поведение точно так же, как если бы input был фактически input.Substring(beginning, length), за исключением того, что индекс любого совпадения учитывается относительно начала input. Это означает, что любые утверждения привязки или утверждения нулевой ширины в начале или конце шаблона ведут себя так, как если бы нет input за пределами этого диапазона. Например, привязки ^, \Gи \A будут удовлетворены по beginning и $ и \z будут удовлетворены по beginning + length - 1.

Если поиск выполняется слева направо (по умолчанию), подсистема регулярных выражений выполняет поиск по символу по индексу beginning символу по индексу beginning + length - 1. Если обработчик регулярных выражений был создан с помощью параметра RegexOptions.RightToLeft, чтобы поиск проходил справа налево, подсистема регулярных выражений выполняет поиск от символа по индексу beginning + length - 1 к символу по индексу beginning.

Этот метод возвращает первое совпадение, которое он находит в этом диапазоне. Последующие совпадения можно получить путем многократного вызова возвращаемого метода Match объекта Match.NextMatch.

Вы можете определить, найден ли шаблон регулярного выражения в входной строке, проверив значение возвращаемого свойства Match объекта Success. Если совпадение найдено, возвращаемое свойство Match объекта Value содержит подстроку из input, которая соответствует шаблону регулярного выражения. Если совпадение не найдено, его значение равно String.Empty.

Исключение RegexMatchTimeoutException возникает, если время выполнения операции сопоставления превышает интервал времени ожидания, указанный конструктором Regex.Regex(String, RegexOptions, TimeSpan). Если при вызове конструктора не задано значение времени ожидания, исключение создается, если операция превышает любое время ожидания, установленное для домена приложения, в котором создается объект Regex. Если время ожидания не определено в вызове конструктора Regex или в свойствах домена приложения или если значение времени ожидания Regex.InfiniteMatchTimeout, исключение не возникает.

См. также раздел

Применяется к

Match(String, String, RegexOptions)

Исходный код:
Regex.Match.cs
Исходный код:
Regex.Match.cs
Исходный код:
Regex.Match.cs

Выполняет поиск входной строки для первого вхождения указанного регулярного выражения с помощью указанных параметров сопоставления.

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

Параметры

input
String

Строка для поиска совпадения.

pattern
String

Шаблон регулярного выражения, соответствующий.

options
RegexOptions

Побитовое сочетание значений перечисления, которые предоставляют параметры сопоставления.

Возвращаемое значение

Объект, содержащий сведения о совпадении.

Исключения

Произошла ошибка синтаксического анализа регулярных выражений.

input или patternnull.

options не является допустимым побитовой комбинацией значений RegexOptions.

Произошло время ожидания. Дополнительные сведения о времени ожидания см. в разделе "Примечания".

Примеры

В следующем примере определяется регулярное выражение, которое соответствует словам, начинающимся с буквы "a". Он использует параметр RegexOptions.IgnoreCase, чтобы гарантировать, что регулярное выражение находит слова, начиная с верхнего регистра "a" и нижнего регистра "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.

Шаблон регулярного выражения \ba\w*\b интерпретируется, как показано в следующей таблице.

Рисунок Описание
\b Начните совпадение с границы слова.
a Соответствует символу "a".
\w* Соответствует нулю, одному или нескольким символам слова.
\b Завершите совпадение по границе слова.

Комментарии

Метод Match(String, String, RegexOptions) возвращает первую подстроку, которая соответствует шаблону регулярного выражения в входной строке. Сведения о элементах языка, используемых для создания шаблона регулярного выражения, см. в разделе языке регулярных выражений — краткий справочник.

Статический метод Match(String, String, RegexOptions) эквивалентен созданию объекта Regex с помощью конструктора Regex(String, RegexOptions) и вызова метода Match(String) экземпляра.

Параметр pattern состоит из элементов языка регулярных выражений, которые символично описывают строку для сопоставления. Дополнительные сведения о регулярных выражениях см. в регулярных выражений .NET и языке регулярных выражений — краткий справочник.

Вы можете определить, найден ли шаблон регулярного выражения в входной строке, проверив значение возвращаемого свойства Match объекта Success. Если совпадение найдено, возвращаемое свойство Match объекта Value содержит подстроку из input, которая соответствует шаблону регулярного выражения. Если совпадение не найдено, его значение равно String.Empty.

Этот метод возвращает первую подстроку, найденную в input, которая соответствует шаблону регулярного выражения. Последующие совпадения можно получить путем многократного вызова возвращаемого метода Match объекта NextMatch. Вы также можете получить все совпадения в одном вызове метода, вызвав метод Regex.Matches(String, String, RegexOptions).

Исключение RegexMatchTimeoutException возникает, если время выполнения операции сопоставления превышает интервал времени ожидания, указанный для домена приложения, в котором вызывается метод. Если время ожидания не определено в свойствах домена приложения или если значение времени ожидания Regex.InfiniteMatchTimeout, исключение не возникает.

Примечания для тех, кто вызывает этот метод

Этот метод истекает после интервала, равного значению времени ожидания по умолчанию домена приложения, в котором он вызывается. Если значение времени ожидания не определено для домена приложения, используется значение InfiniteMatchTimeout, которое предотвращает истечение времени ожидания метода. Рекомендуемый статический метод для получения сопоставления шаблонов — Match(String, String), что позволяет задать интервал времени ожидания.

См. также раздел

Применяется к

Match(String, String, RegexOptions, TimeSpan)

Исходный код:
Regex.Match.cs
Исходный код:
Regex.Match.cs
Исходный код:
Regex.Match.cs

Выполняет поиск входной строки для первого вхождения указанного регулярного выражения, используя указанные параметры сопоставления и интервал времени ожидания.

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

Параметры

input
String

Строка для поиска совпадения.

pattern
String

Шаблон регулярного выражения, соответствующий.

options
RegexOptions

Побитовое сочетание значений перечисления, которые предоставляют параметры сопоставления.

matchTimeout
TimeSpan

Интервал времени ожидания или InfiniteMatchTimeout, чтобы указать, что метод не должен истекать.

Возвращаемое значение

Объект, содержащий сведения о совпадении.

Исключения

Произошла ошибка синтаксического анализа регулярных выражений.

input или patternnull.

options не является допустимым побитовой комбинацией значений RegexOptions.

-или-

matchTimeout отрицательно, ноль или больше примерно 24 дней.

Произошло время ожидания. Дополнительные сведения о времени ожидания см. в разделе "Примечания".

Комментарии

Метод Match(String, String, RegexOptions, TimeSpan) возвращает первую подстроку, которая соответствует шаблону регулярного выражения в входной строке. Сведения о элементах языка, используемых для создания шаблона регулярного выражения, см. в разделе языке регулярных выражений — краткий справочник.

Статический метод Match(String, String, RegexOptions, TimeSpan) эквивалентен созданию объекта Regex с помощью конструктора Regex(String, RegexOptions, TimeSpan) и вызова метода Match(String) экземпляра.

Параметр pattern состоит из элементов языка регулярных выражений, которые символично описывают строку для сопоставления. Дополнительные сведения о регулярных выражениях см. в регулярных выражений .NET и языке регулярных выражений — краткий справочник.

Вы можете определить, найден ли шаблон регулярного выражения в входной строке, проверив значение возвращаемого свойства Match объекта Success. Если совпадение найдено, возвращаемое свойство Match объекта Value содержит подстроку из input, которая соответствует шаблону регулярного выражения. Если совпадение не найдено, его значение равно String.Empty.

Этот метод возвращает первую подстроку, найденную в input, которая соответствует шаблону регулярного выражения. Последующие совпадения можно получить путем многократного вызова возвращаемого метода Match объекта NextMatch. Вы также можете получить все совпадения в одном вызове метода, вызвав метод Regex.Matches(String, String, RegexOptions).

Параметр matchTimeout указывает, как долго метод сопоставления шаблонов должен попытаться найти совпадение до истечения времени ожидания. Установка интервала времени ожидания запрещает регулярным выражениям, которые полагаются на чрезмерную обратную дорожку, чтобы перестать отвечать на запросы при обработке входных данных, содержащих близкие совпадения. Дополнительные сведения см. в рекомендациях по регулярных выражений и обратного отслеживания. Если совпадение не найдено в этом интервале времени, метод создает исключение RegexMatchTimeoutException. matchTimeout переопределяет любое значение времени ожидания по умолчанию, определенное для домена приложения, в котором выполняется метод.

Примечания для тех, кто вызывает этот метод

Рекомендуется задать для параметра matchTimeout соответствующее значение, например две секунды. Если отключить время ожидания, указав InfiniteMatchTimeout, подсистема регулярных выражений обеспечивает немного лучшую производительность. Однако вы должны отключить тайм-аут только в следующих условиях:

  • Если входные данные, обработанные регулярным выражением, являются производными от известного и доверенного источника или состоят из статического текста. Это исключает текст, динамически введенный пользователями.

  • При тщательном тестировании шаблона регулярного выражения для эффективной обработки совпадений, не совпадающих и близких совпадений.

  • Если шаблон регулярного выражения не содержит языковых элементов, которые, как известно, вызывают чрезмерную обратную дорожку при обработке близкого совпадения.

См. также раздел

Применяется к