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


Regex.Matches Метод

Определение

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

Перегрузки

Matches(String, String, RegexOptions, TimeSpan)

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

Matches(String, String, RegexOptions)

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

Matches(String, Int32)

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

Matches(String)

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

Matches(String, String)

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

Matches(String, String, RegexOptions, TimeSpan)

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

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

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

Параметры

input
String

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

pattern
String

Шаблон регулярного выражения для сопоставления.

options
RegexOptions

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

matchTimeout
TimeSpan

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

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

Коллекция объектов Match, найденных при поиске. Если соответствующие объекты не найдены, метод возвращает пустой объект коллекции.

Исключения

Произошла ошибка анализа регулярного выражения.

Параметр input или pattern имеет значение null.

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

-или-

Значение параметра matchTimeout отрицательное, равно нулю или больше, чем приблизительно 24 дня.

Примеры

В следующем примере вызывается Matches(String, String, RegexOptions, TimeSpan) метод для выполнения сравнения с учетом регистра, которое соответствует любому слову в предложении, заканчивающемся на "es". Затем он вызывает Matches(String, String, RegexOptions, TimeSpan) метод для сравнения шаблона с входной строкой без учета регистра. В обоих случаях интервал времени ожидания устанавливается в одну секунду. Как видно из выходных данных, два метода возвращают разные результаты.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\b\w+es\b";
      string sentence = "NOTES: Any notes or comments are optional.";
      
      // Call Matches method without specifying any options.
      try {
         foreach (Match match in Regex.Matches(sentence, pattern,
                                               RegexOptions.None,
                                               TimeSpan.FromSeconds(1)))
            Console.WriteLine("Found '{0}' at position {1}", 
                              match.Value, match.Index);
      }
      catch (RegexMatchTimeoutException) {
         // Do Nothing: Assume that timeout represents no match.
      }
      Console.WriteLine();

      // Call Matches method for case-insensitive matching.
      try { 
         foreach (Match match in Regex.Matches(sentence, pattern, RegexOptions.IgnoreCase))
            Console.WriteLine("Found '{0}' at position {1}", 
                              match.Value, match.Index);
      }
      catch (RegexMatchTimeoutException) {}
   }
}
// The example displays the following output:
//       Found 'notes' at position 11
//       
//       Found 'NOTES' at position 0
//       Found 'notes' at position 11
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "\b\w+es\b"
      Dim sentence As String = "NOTES: Any notes or comments are optional."
      
      ' Call Matches method without specifying any options.
      For Each match As Match In Regex.Matches(sentence, pattern, 
                                               RegexOptions.None, 
                                               TimeSpan.FromSeconds(1))
         Try
            Console.WriteLine("Found '{0}' at position {1}", match.Value, match.Index)
         Catch e As RegexMatchTimeoutException
            ' Do Nothing: Assume that timeout represents no match.
         End Try
      Next
      Console.WriteLine()
      
      ' Call Matches method for case-insensitive matching.
      Try
         For Each match As Match In Regex.Matches(sentence, pattern, 
                                                  RegexOptions.IgnoreCase,
                                                  TimeSpan.FromSeconds(1))
            Console.WriteLine("Found '{0}' at position {1}", match.Value, match.Index)
         Next
      Catch de As RegexMatchTimeoutException
         ' Do Nothing: Assume that timeout represents no match.
      End Try
   End Sub
End Module
' The example displays the following output:
'       Found 'notes' at position 11
'       
'       Found 'NOTES' at position 0
'       Found 'notes' at position 11

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

Шаблон Описание
\b Совпадение должно начинаться на границе слова.
\w+ Совпадение с одним или несколькими символами слова.
es Соответствует строке литерала "es".
\b Совпадение должно заканчиваться на границе слова.

Комментарии

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

   try {
      Match match = Regex.Match(input, pattern, options,
                                TimeSpan.FromSeconds(1));
      while (match.Success) {
            // Handle match here...

            match = match.NextMatch();
      }  
   }
   catch (RegexMatchTimeoutException) {
      // Do nothing: assume that exception represents no match.
   }
   Try
      Dim match As Match = Regex.Match(input, pattern, options, 
                                       TimeSpan.FromSeconds(1))
      Do While match.Success
            ' Handle match here...

            match = match.NextMatch()
      Loop  
   Catch e As RegexMatchTimeoutException
      ' Do nothing: assume that exception represents no match.
   End Try

Статические Matches методы эквивалентны созданию объекта с указанным шаблоном Regex регулярного выражения и вызову метода Matchesэкземпляра .

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

Метод Matches использует отложенную оценку для заполнения возвращаемого MatchCollection объекта. Доступ к членам этой коллекции, таким как MatchCollection.Count и MatchCollection.CopyTo , приводит к немедленному заполнению коллекции. Чтобы воспользоваться преимуществами отложенной оценки, следует выполнить итерацию коллекции с помощью конструкции, такой как foreach в C# и For Each...Next в Visual Basic.

Из-за отложенной оценки вызов Matches метода не вызывает RegexMatchTimeoutException исключение. Однако при выполнении MatchCollection операции с объектом, возвращаемым этим методом, возникает исключение, если операция сопоставления превышает этот интервал времени ожидания, указанный параметромmatchTimeout .

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

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

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

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

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

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

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

Matches(String, String, RegexOptions)

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

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

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

Параметры

input
String

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

pattern
String

Шаблон регулярного выражения для сопоставления.

options
RegexOptions

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

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

Коллекция объектов Match, найденных при поиске. Если соответствующие объекты не найдены, метод возвращает пустой объект коллекции.

Исключения

Произошла ошибка анализа регулярного выражения.

Параметр input или pattern имеет значение null.

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

Примеры

В следующем примере вызывается Matches(String, String) метод для идентификации любого слова в предложении, заканчивающемся на "es", а затем вызывается Matches(String, String, RegexOptions) метод для выполнения сравнения шаблона без учета регистра с входной строкой. Как видно из выходных данных, два метода возвращают разные результаты.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\b\w+es\b";
      string sentence = "NOTES: Any notes or comments are optional.";
      
      // Call Matches method without specifying any options.
      foreach (Match match in Regex.Matches(sentence, pattern))
         Console.WriteLine("Found '{0}' at position {1}", 
                           match.Value, match.Index);
      Console.WriteLine();

      // Call Matches method for case-insensitive matching.
      foreach (Match match in Regex.Matches(sentence, pattern, RegexOptions.IgnoreCase))
         Console.WriteLine("Found '{0}' at position {1}", 
                           match.Value, match.Index);
   }
}
// The example displays the following output:
//       Found 'notes' at position 11
//       
//       Found 'NOTES' at position 0
//       Found 'notes' at position 11
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "\b\w+es\b"
      Dim sentence As String = "NOTES: Any notes or comments are optional."
      
      ' Call Matches method without specifying any options.
      For Each match As Match In Regex.Matches(sentence, pattern)
         Console.WriteLine("Found '{0}' at position {1}", match.Value, match.Index)
      Next
      Console.WriteLine()
      
      ' Call Matches method for case-insensitive matching.
      For Each match As Match In Regex.Matches(sentence, pattern, RegexOptions.IgnoreCase)
         Console.WriteLine("Found '{0}' at position {1}", match.Value, match.Index)
      Next
   End Sub
End Module
' The example displays the following output:
'       Found 'notes' at position 11
'       
'       Found 'NOTES' at position 0
'       Found 'notes' at position 11

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

Шаблон Описание
\b Совпадение должно начинаться на границе слова.
\w+ Совпадение с одним или несколькими символами слова.
es Соответствует строке литерала "es".
\b Совпадение должно заканчиваться на границе слова.

Комментарии

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

Match match = Regex.Match(input, pattern, options);
while (match.Success) {
      // Handle match here...

      match = match.NextMatch();
}
Dim match As Match = Regex.Match(input, pattern, options)
Do While match.Success
      ' Handle match here...

      match = match.NextMatch()
Loop

Статические Matches методы эквивалентны созданию объекта с указанным шаблоном Regex регулярного выражения и вызову метода Matchesэкземпляра .

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

Метод Matches использует отложенную оценку для заполнения возвращаемого MatchCollection объекта. Доступ к членам этой коллекции, таким как MatchCollection.Count и MatchCollection.CopyTo , приводит к немедленному заполнению коллекции. Чтобы воспользоваться преимуществами отложенной оценки, следует выполнить итерацию коллекции с помощью конструкции, такой как foreach в C# и For Each...Next в Visual Basic.

Из-за отложенной оценки вызов Matches(String, String) метода не вызывает RegexMatchTimeoutException исключение. Однако исключение возникает при выполнении MatchCollection операции с объектом, возвращаемым этим методом, если интервал времени ожидания определяется свойством "REGEX_DEFAULT_MATCH_TIMEOUT" текущего домена приложения, а операция сопоставления превышает этот интервал времени ожидания.

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

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

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

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

Matches(String, Int32)

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

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

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

Параметры

input
String

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

startat
Int32

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

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

Коллекция объектов Match, найденных при поиске. Если соответствующие объекты не найдены, метод возвращает пустой объект коллекции.

Исключения

input имеет значение null.

Параметр startat имеет значение меньше нуля или больше длины input.

Примеры

В следующем примере метод используется Match(String) для поиска первого слова в предложении, заканчивающегося на "es", а затем вызывает Matches(String, Int32) метод для определения дополнительных слов, заканчивающихся на "es".

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\b\w+es\b";
      Regex rgx = new Regex(pattern);
      string sentence = "Who writes these notes and uses our paper?";
      
      // Get the first match.
      Match match = rgx.Match(sentence);
      if (match.Success) {
         Console.WriteLine("Found first 'es' in '{0}' at position {1}", 
                           match.Value, match.Index);
         // Get any additional matches.
         foreach (Match m in rgx.Matches(sentence, match.Index + match.Length))
            Console.WriteLine("Also found '{0}' at position {1}", 
                              m.Value, m.Index);
      }   
   }
}
// The example displays the following output:
//       Found first 'es' in 'writes' at position 4
//       Also found 'notes' at position 17
//       Also found 'uses' at position 27
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "\b\w+es\b"
      Dim rgx As New Regex(pattern)
      Dim sentence As String = "Who writes these notes and uses our paper?"
      
      ' Get the first match.
      Dim match As Match = rgx.Match(sentence)
      If match.Success Then
         Console.WriteLine("Found first 'es' in '{0}' at position {1}", _
                           match.Value, match.Index)
         ' Get any additional matches.
         For Each match In rgx.Matches(sentence, match.Index + match.Length)
            Console.WriteLine("Also found '{0}' at position {1}", _
                              match.Value, match.Index)
         Next
      End If   
   End Sub
End Module
' The example displays the following output:
'       Found first 'es' in 'writes' at position 4
'       Also found 'notes' at position 17
'       Also found 'uses' at position 27

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

Шаблон Описание
\b Совпадение должно начинаться на границе слова.
\w+ Совпадение с одним или несколькими символами слова.
es Соответствует строке литерала "es".
\b Совпадение должно заканчиваться на границе слова.

Комментарии

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

Match match = regex.Match(input, startAt);
while (match.Success) {
      // Handle match here...

      match = match.NextMatch();
}
Dim match As Match = regex.Match(input, startAt)
Do While match.Success
      ' Handle match here...

      match = match.NextMatch()
Loop

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

Дополнительные сведения о startatсм. в разделе Примечания статьи Match(String, Int32).

Метод Matches использует отложенную оценку для заполнения возвращаемого MatchCollection объекта. Доступ к членам этой коллекции, таким как MatchCollection.Count и MatchCollection.CopyTo , приводит к немедленному заполнению коллекции. Чтобы воспользоваться преимуществами отложенной оценки, следует выполнить итерацию коллекции с помощью конструкции, такой как foreach в C# и For Each...Next в Visual Basic.

Из-за отложенной оценки вызов Matches(String, Int32) метода не вызывает RegexMatchTimeoutException исключение. Однако исключение возникает при выполнении MatchCollection операции с объектом, возвращаемым этим методом, если MatchTimeout свойство не Regex.InfiniteMatchTimeout имеет значения и операция сопоставления превышает интервал времени ожидания.

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

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

Matches(String)

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

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

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

Параметры

input
String

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

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

Коллекция объектов Match, найденных при поиске. Если соответствующие объекты не найдены, метод возвращает пустой объект коллекции.

Исключения

input имеет значение null.

Примеры

В следующем примере метод используется для идентификации Matches(String) слов в предложении, заканчивающихся на "es".

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\b\w+es\b";
      Regex rgx = new Regex(pattern);
      string sentence = "Who writes these notes?";
      
      foreach (Match match in rgx.Matches(sentence))
         Console.WriteLine("Found '{0}' at position {1}", 
                           match.Value, match.Index);
   }
}
// The example displays the following output:
//       Found 'writes' at position 4
//       Found 'notes' at position 17
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "\b\w+es\b"
      Dim rgx As New Regex(pattern)
      Dim sentence As String = "Who writes these notes?"
      
      For Each match As Match In rgx.Matches(sentence)
         Console.WriteLine("Found '{0}' at position {1}", match.Value, match.Index)
      Next
   End Sub
End Module
' The example displays the following output:
'       Found 'writes' at position 4
'       Found 'notes' at position 17

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

Шаблон Описание
\b Совпадение должно начинаться на границе слова.
\w+ Совпадение с одним или несколькими символами слова.
es Соответствует строке литерала "es".
\b Совпадение должно заканчиваться на границе слова.

Комментарии

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

Match match = regex.Match(input);
while (match.Success) {
      // Handle match here...

      match = match.NextMatch();
}
Dim match As Match = regex.Match(input)
Do While match.Success
      ' Handle match here...

      match = match.NextMatch()
Loop

Коллекция включает только совпадения и завершается при первом несовпаде.

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

Метод Matches использует отложенную оценку для заполнения возвращаемого MatchCollection объекта. Доступ к членам этой коллекции, таким как MatchCollection.Count и MatchCollection.CopyTo , приводит к немедленному заполнению коллекции. Чтобы воспользоваться преимуществами отложенной оценки, следует выполнить итерацию коллекции с помощью конструкции, такой как foreach в C# и For Each...Next в Visual Basic.

Из-за отложенной оценки вызов Matches(String) метода не вызывает RegexMatchTimeoutException исключение. Однако исключение возникает при выполнении MatchCollection операции с объектом, возвращаемым этим методом, если MatchTimeout свойство не Regex.InfiniteMatchTimeout имеет значения и операция сопоставления превышает интервал времени ожидания.

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

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

Matches(String, String)

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

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

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

Параметры

input
String

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

pattern
String

Шаблон регулярного выражения для сопоставления.

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

Коллекция объектов Match, найденных при поиске. Если соответствующие объекты не найдены, метод возвращает пустой объект коллекции.

Исключения

Произошла ошибка анализа регулярного выражения.

Параметр input или pattern имеет значение null.

Примеры

В следующем примере метод используется для идентификации Matches(String, String) любого слова в предложении, заканчивающегося на "es".

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\b\w+es\b";
      string sentence = "Who writes these notes?";
      
      foreach (Match match in Regex.Matches(sentence, pattern))
         Console.WriteLine("Found '{0}' at position {1}", 
                           match.Value, match.Index);
   }
}
// The example displays the following output:
//       Found 'writes' at position 4
//       Found 'notes' at position 17
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "\b\w+es\b"
      Dim sentence As String = "Who writes these notes?"
      For Each match As Match In Regex.Matches(sentence, pattern)
         Console.WriteLine("Found '{0}' at position {1}", match.Value, match.Index)
      Next
   End Sub
End Module
' The example displays the following output:
'       Found 'writes' at position 4
'       Found 'notes' at position 17

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

Шаблон Описание
\b Совпадение должно начинаться на границе слова.
\w+ Совпадение с одним или несколькими символами слова.
es Соответствует строке литерала "es".
\b Совпадение должно заканчиваться на границе слова.

Комментарии

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

Match match = Regex.Match(input, pattern);
while (match.Success) {
      // Handle match here...

      match = match.NextMatch();
}
Dim match As Match = Regex.Match(input, pattern)
Do While match.Success
      ' Handle match here...

      match = match.NextMatch()
Loop

Статические Matches методы эквивалентны созданию объекта с указанным шаблоном Regex регулярного выражения и вызову метода Matchesэкземпляра .

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

Метод Matches использует отложенную оценку для заполнения возвращаемого MatchCollection объекта. Доступ к членам этой коллекции, таким как MatchCollection.Count и MatchCollection.CopyTo , приводит к немедленному заполнению коллекции. Чтобы воспользоваться преимуществами отложенной оценки, следует выполнить итерацию коллекции с помощью конструкции, такой как foreach в C# и For Each...Next в Visual Basic.

Из-за отложенной оценки вызов Matches(String, String) метода не вызывает RegexMatchTimeoutException исключение. Однако исключение возникает при выполнении MatchCollection операции с объектом, возвращаемым этим методом, если интервал времени ожидания определяется свойством "REGEX_DEFAULT_MATCH_TIMEOUT" текущего домена приложения, а операция сопоставления превышает этот интервал времени ожидания.

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

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

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

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