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


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
Исходный код:
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
Исходный код:
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
Исходный код:
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
Исходный код:
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
Исходный код:
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)это позволяет указать интервал времени ожидания.

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

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