Regex.Matches Regex.Matches Regex.Matches Regex.Matches Method

Определение

Ищет во входной строке все вхождения регулярного выражения и возвращает все соответствия.Searches an input string for all occurrences of a regular expression and returns all the matches.

Перегрузки

Matches(String) Matches(String) Matches(String) Matches(String)

Ищет в указанной входной строке все вхождения регулярного выражения.Searches the specified input string for all occurrences of a regular expression.

Matches(String, Int32) Matches(String, Int32) Matches(String, Int32) Matches(String, Int32)

Ищет в указанной входной строке все вхождения регулярного выражения, начиная с указанной начальной позиции.Searches the specified input string for all occurrences of a regular expression, beginning at the specified starting position in the string.

Matches(String, String) Matches(String, String) Matches(String, String) Matches(String, String)

Ищет в указанной входной строке все вхождения заданного регулярного выражения.Searches the specified input string for all occurrences of a specified regular expression.

Matches(String, String, RegexOptions) Matches(String, String, RegexOptions) Matches(String, String, RegexOptions) Matches(String, String, RegexOptions)

Ищет в указанной входной строке все вхождения заданного регулярного выражения, используя указанные параметры сопоставления.Searches the specified input string for all occurrences of a specified regular expression, using the specified matching options.

Matches(String, String, RegexOptions, TimeSpan) Matches(String, String, RegexOptions, TimeSpan) Matches(String, String, RegexOptions, TimeSpan) Matches(String, String, RegexOptions, TimeSpan)

Ищет в указанной входной строке все вхождения заданного регулярного выражения, используя указанные параметры сопоставления и интервал времени ожидания.Searches the specified input string for all occurrences of a specified regular expression, using the specified matching options and time-out interval.

Matches(String) Matches(String) Matches(String) Matches(String)

Ищет в указанной входной строке все вхождения регулярного выражения.Searches the specified input string for all occurrences of a regular expression.

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 String String String

Строка для поиска соответствия.The string to search for a match.

Возвраты

Коллекция объектов Match, найденных при поиске.A collection of the Match objects found by the search. Если соответствующие объекты не найдены, метод возвращает пустой объект коллекции.If no matches are found, the method returns an empty collection object.

Исключения

Свойство input имеет значение null.input is null.

Примеры

В следующем примере Matches(String) метод используется для обнаружения слов в предложении, заканчивающемся на «ES».The following example uses the Matches(String) method to identify any words in a sentence that end in "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 определяется, как показано в следующей таблице.The regular expression pattern \b\w+es\b is defined as shown in the following table.

ШаблонPattern ОписаниеDescription
\b Совпадение должно начинаться на границе слова.Begin the match at a word boundary.
\w+ Совпадение с одним или несколькими символами слова.Match one or more word characters.
es Совпадение со строкой литерала "ES".Match the literal string "es".
\b Совпадение должно заканчиваться на границе слова.End the match at a word boundary.

Комментарии

Метод аналогичен Match(String) методу, за исключением того, что он возвращает сведения обо всех совпадениях, найденных во входной строке, а не на одном совпадении. Matches(String)The Matches(String) method is similar to the Match(String) method, except that it returns information about all the matches found in the input string, instead of a single match. Он эквивалентен следующему коду:It is equivalent to the following code:

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  

Коллекция включает только соответствия и завершается в первом несовпадении.The collection includes only matches and terminates at the first non-match.

Шаблон регулярного выражения, для которого Matches(String) выполняется поиск метода, определяется вызовом одного Regex из конструкторов класса.The regular expression pattern for which the Matches(String) method searches is defined by the call to one of the Regex class constructors. Дополнительные сведения об элементах, которые могут формировать шаблон регулярного выражения, см. в разделе Язык регулярных выражений — краткий справочник.For more information about the elements that can form a regular expression pattern, see Regular Expression Language - Quick Reference.

Метод использует отложенное вычисление для заполнения возвращаемого MatchCollection объекта. MatchesThe Matches method uses lazy evaluation to populate the returned MatchCollection object. Доступ к членам этой коллекции, MatchCollection.Count например и, MatchCollection.CopyTo приводит к немедленному заполнению коллекции.Accessing members of this collection such as MatchCollection.Count and MatchCollection.CopyTo causes the collection to be populated immediately. Чтобы воспользоваться преимуществами отложенного вычисления, необходимо выполнить итерацию коллекции, используя конструкцию, foreach например C# в For Eachи...NextTo take advantage of lazy evaluation, you should iterate the collection by using a construct such as foreach in C# and For EachNext в Visual Basic.in Visual Basic.

Из-за отложенного вычисления вызов Matches(String) метода не RegexMatchTimeoutException вызывает исключение.Because of its lazy evaluation, calling the Matches(String) method does not throw a RegexMatchTimeoutException exception. Однако исключение возникает при выполнении операции над MatchCollection объектом, возвращаемым этим методом, MatchTimeout если свойство не равно Regex.InfiniteMatchTimeout , а операция сопоставления превышает интервал времени ожидания.However, the exception is thrown when an operation is performed on the MatchCollection object returned by this method, if the MatchTimeout property is not Regex.InfiniteMatchTimeout and a matching operation exceeds the time-out interval.

Дополнительно

Matches(String, Int32) Matches(String, Int32) Matches(String, Int32) Matches(String, Int32)

Ищет в указанной входной строке все вхождения регулярного выражения, начиная с указанной начальной позиции.Searches the specified input string for all occurrences of a regular expression, beginning at the specified starting position in the string.

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 String String String

Строка для поиска соответствия.The string to search for a match.

startat
Int32 Int32 Int32 Int32

Позиция символа во входной строке, с которой необходимо начать поиск.The character position in the input string at which to start the search.

Возвраты

Коллекция объектов Match, найденных при поиске.A collection of the Match objects found by the search. Если соответствующие объекты не найдены, метод возвращает пустой объект коллекции.If no matches are found, the method returns an empty collection object.

Исключения

Параметр startat имеет значение меньше нуля или больше длины input.startat is less than zero or greater than the length of input.

Примеры

В следующем примере Match(String) метод используется для поиска первого слова в предложении, которое заканчивается на "ES", а затем Matches(String, Int32) вызывает метод для определения любых дополнительных слов, заканчивающихся на "ES".The following example uses the Match(String) method to find the first word in a sentence that ends in "es", and then calls the Matches(String, Int32) method to identify any additional words that end in "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 определяется, как показано в следующей таблице.The regular expression pattern \b\w+es\b is defined as shown in the following table.

ШаблонPattern ОписаниеDescription
\b Совпадение должно начинаться на границе слова.Begin the match at a word boundary.
\w+ Совпадение с одним или несколькими символами слова.Match one or more word characters.
es Совпадение со строкой литерала "ES".Match the literal string "es".
\b Совпадение должно заканчиваться на границе слова.End the match at a word boundary.

Комментарии

Метод аналогичен Match(String, Int32) методу, за исключением того, что он возвращает сведения обо всех совпадениях, найденных во входной строке, а не на одном совпадении. Matches(String, Int32)The Matches(String, Int32) method is similar to the Match(String, Int32) method, except that it returns information about all the matches found in the input string, instead of a single match. Он эквивалентен следующему коду:It is equivalent to the following code:

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 из конструкторов класса.The regular expression pattern for which the Matches(String, Int32) method searches is defined by the call to one of the Regex class constructors. Дополнительные сведения об элементах, которые могут формировать шаблон регулярного выражения, см. в разделе Язык регулярных выражений — краткий справочник.For more information about the elements that can form a regular expression pattern, see Regular Expression Language - Quick Reference.

Метод использует отложенное вычисление для заполнения возвращаемого MatchCollection объекта. MatchesThe Matches method uses lazy evaluation to populate the returned MatchCollection object. Доступ к членам этой коллекции, MatchCollection.Count например и, MatchCollection.CopyTo приводит к немедленному заполнению коллекции.Accessing members of this collection such as MatchCollection.Count and MatchCollection.CopyTo causes the collection to be populated immediately. Чтобы воспользоваться преимуществами отложенного вычисления, необходимо выполнить итерацию коллекции, используя конструкцию, foreach например C# в For Eachи...NextTo take advantage of lazy evaluation, you should iterate the collection by using a construct such as foreach in C# and For EachNext в Visual Basic.in Visual Basic.

Из-за отложенного вычисления вызов Matches(String, Int32) метода не RegexMatchTimeoutException вызывает исключение.Because of its lazy evaluation, calling the Matches(String, Int32) method does not throw a RegexMatchTimeoutException exception. Однако исключение возникает при выполнении операции над MatchCollection объектом, возвращаемым этим методом, MatchTimeout если свойство не равно Regex.InfiniteMatchTimeout , а операция сопоставления превышает интервал времени ожидания.However, the exception is thrown when an operation is performed on the MatchCollection object returned by this method, if the MatchTimeout property is not Regex.InfiniteMatchTimeout and a matching operation exceeds the time-out interval.

Дополнительно

Matches(String, String) Matches(String, String) Matches(String, String) Matches(String, String)

Ищет в указанной входной строке все вхождения заданного регулярного выражения.Searches the specified input string for all occurrences of a specified regular expression.

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 String String String

Строка для поиска соответствия.The string to search for a match.

pattern
String String String String

Шаблон регулярного выражения для сопоставления.The regular expression pattern to match.

Возвраты

Коллекция объектов Match, найденных при поиске.A collection of the Match objects found by the search. Если соответствующие объекты не найдены, метод возвращает пустой объект коллекции.If no matches are found, the method returns an empty collection object.

Исключения

Произошла ошибка анализа регулярного выражения.A regular expression parsing error occurred.

Значение параметра input или patternnull.input or pattern is null.

Примеры

В следующем примере Matches(String, String) метод используется для обнаружения любого слова в предложении, которое заканчивается на "ES".The following example uses the Matches(String, String) method to identify any word in a sentence that ends in "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 определяется, как показано в следующей таблице.The regular expression pattern \b\w+es\b is defined as shown in the following table.

ШаблонPattern ОписаниеDescription
\b Совпадение должно начинаться на границе слова.Begin the match at a word boundary.
\w+ Совпадение с одним или несколькими символами слова.Match one or more word characters.
es Совпадение со строкой литерала "ES".Match the literal string "es".
\b Совпадение должно заканчиваться на границе слова.End the match at a word boundary.

Комментарии

Метод аналогичен Match(String, String) методу, за исключением того, что он возвращает сведения обо всех совпадениях, найденных во входной строке, а не на одном совпадении. Matches(String, String)The Matches(String, String) method is similar to the Match(String, String) method, except that it returns information about all the matches found in the input string, instead of a single match. Он эквивалентен следующему коду:It is equivalent to the following code:

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экземпляра.The static Matches methods are equivalent to constructing a Regex object with the specified regular expression pattern and calling the instance method Matches.

pattern Параметр состоит из элементов языка регулярных выражений, которые в символьном виде описывают строку для сопоставления.The pattern parameter consists of regular expression language elements that symbolically describe the string to match. Дополнительные сведения о регулярных выражениях см. в разделе .NET Framework регулярные выражения и Язык регулярных выражений — краткий справочник.For more information about regular expressions, see .NET Framework Regular Expressions and Regular Expression Language - Quick Reference.

Метод использует отложенное вычисление для заполнения возвращаемого MatchCollection объекта. MatchesThe Matches method uses lazy evaluation to populate the returned MatchCollection object. Доступ к членам этой коллекции, MatchCollection.Count например и, MatchCollection.CopyTo приводит к немедленному заполнению коллекции.Accessing members of this collection such as MatchCollection.Count and MatchCollection.CopyTo causes the collection to be populated immediately. Чтобы воспользоваться преимуществами отложенного вычисления, необходимо выполнить итерацию коллекции, используя конструкцию, foreach например C# в For Eachи...NextTo take advantage of lazy evaluation, you should iterate the collection by using a construct such as foreach in C# and For EachNext в Visual Basic.in Visual Basic.

Из-за отложенного вычисления вызов Matches(String, String) метода не RegexMatchTimeoutException вызывает исключение.Because of its lazy evaluation, calling the Matches(String, String) method does not throw a RegexMatchTimeoutException exception. Однако исключение возникает при выполнении операции над MatchCollection объектом, возвращаемым этим методом, если интервал времени ожидания определяется свойством "REGEX_DEFAULT_MATCH_TIMEOUT" текущего домена приложения и соответствующей операцией. превышает этот интервал времени ожидания.However, the exception is thrown when an operation is performed on the MatchCollection object returned by this method, if a time-out interval is defined by the "REGEX_DEFAULT_MATCH_TIMEOUT" property of the current application domain and a matching operation exceeds this time-out interval.

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

Время ожидания этого метода истекает после интервала, который равен значению времени ожидания по умолчанию для домена приложения, в котором он вызывается.This method times out after an interval that is equal to the default time-out value of the application domain in which it is called. Если для домена приложения не определено значение времени ожидания, то используется значение InfiniteMatchTimeout, запрещающее истечение времени ожидания метода.If a time-out value has not been defined for the application domain, the value InfiniteMatchTimeout, which prevents the method from timing out, is used. Для получения нескольких совпадений Matches(String, String, RegexOptions, TimeSpan)шаблонов рекомендуется использовать статический метод, который позволяет указать интервал времени ожидания.The recommended static method for retrieving multiple pattern matches is Matches(String, String, RegexOptions, TimeSpan), which lets you specify the time-out interval.

Дополнительно

Matches(String, String, RegexOptions) Matches(String, String, RegexOptions) Matches(String, String, RegexOptions) Matches(String, String, RegexOptions)

Ищет в указанной входной строке все вхождения заданного регулярного выражения, используя указанные параметры сопоставления.Searches the specified input string for all occurrences of a specified regular expression, using the specified matching options.

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 String String String

Строка для поиска соответствия.The string to search for a match.

pattern
String String String String

Шаблон регулярного выражения для сопоставления.The regular expression pattern to match.

options
RegexOptions RegexOptions RegexOptions RegexOptions

Побитовая комбинация значений перечисления, задающая параметры для сопоставления.A bitwise combination of the enumeration values that specify options for matching.

Возвраты

Коллекция объектов Match, найденных при поиске.A collection of the Match objects found by the search. Если соответствующие объекты не найдены, метод возвращает пустой объект коллекции.If no matches are found, the method returns an empty collection object.

Исключения

Произошла ошибка анализа регулярного выражения.A regular expression parsing error occurred.

Значение параметра input или patternnull.input or pattern is null.

Параметр options не является допустимой битовой комбинацией значений RegexOptions.options is not a valid bitwise combination of RegexOptions values.

Примеры

В следующем примере вызывается Matches(String, String) метод для обнаружения любого слова в предложении, заканчивающемся на "ES", а затем Matches(String, String, RegexOptions) вызывается метод для выполнения сравнения шаблона со входной строкой без учета регистра.The following example calls the Matches(String, String) method to identify any word in a sentence that ends in "es", and then calls the Matches(String, String, RegexOptions) method to perform a case-insensitive comparison of the pattern with the input string. Как видно из выходных данных, два метода возвращают разные результаты.As the output shows, the two methods return different results.

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 определяется, как показано в следующей таблице.The regular expression pattern \b\w+es\b is defined as shown in the following table.

ШаблонPattern ОписаниеDescription
\b Совпадение должно начинаться на границе слова.Begin the match at a word boundary.
\w+ Совпадение с одним или несколькими символами слова.Match one or more word characters.
es Совпадение со строкой литерала "ES".Match the literal string "es".
\b Совпадение должно заканчиваться на границе слова.End the match at a word boundary.

Комментарии

Метод аналогичен Match(String, String, RegexOptions) методу, за исключением того, что он возвращает сведения обо всех совпадениях, найденных во входной строке, а не на одном совпадении. Matches(String, String, RegexOptions)The Matches(String, String, RegexOptions) method is similar to the Match(String, String, RegexOptions) method, except that it returns information about all the matches found in the input string, instead of a single match. Он эквивалентен следующему коду:It is equivalent to the following code:

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экземпляра.The static Matches methods are equivalent to constructing a Regex object with the specified regular expression pattern and calling the instance method Matches.

pattern Параметр состоит из элементов языка регулярных выражений, которые в символьном виде описывают строку для сопоставления.The pattern parameter consists of regular expression language elements that symbolically describe the string to match. Дополнительные сведения о регулярных выражениях см. в разделе .NET Framework регулярные выражения и Язык регулярных выражений — краткий справочник.For more information about regular expressions, see .NET Framework Regular Expressions and Regular Expression Language - Quick Reference.

Метод использует отложенное вычисление для заполнения возвращаемого MatchCollection объекта. MatchesThe Matches method uses lazy evaluation to populate the returned MatchCollection object. Доступ к членам этой коллекции, MatchCollection.Count например и, MatchCollection.CopyTo приводит к немедленному заполнению коллекции.Accessing members of this collection such as MatchCollection.Count and MatchCollection.CopyTo causes the collection to be populated immediately. Чтобы воспользоваться преимуществами отложенного вычисления, необходимо выполнить итерацию коллекции, используя конструкцию, foreach например C# в For Eachи...NextTo take advantage of lazy evaluation, you should iterate the collection by using a construct such as foreach in C# and For EachNext в Visual Basic.in Visual Basic.

Из-за отложенного вычисления вызов Matches(String, String) метода не RegexMatchTimeoutException вызывает исключение.Because of its lazy evaluation, calling the Matches(String, String) method does not throw a RegexMatchTimeoutException exception. Однако исключение возникает при выполнении операции над MatchCollection объектом, возвращаемым этим методом, если интервал времени ожидания определяется свойством "REGEX_DEFAULT_MATCH_TIMEOUT" текущего домена приложения и соответствующей операцией. превышает этот интервал времени ожидания.However, the exception is thrown when an operation is performed on the MatchCollection object returned by this method, if a time-out interval is defined by the "REGEX_DEFAULT_MATCH_TIMEOUT" property of the current application domain and a matching operation exceeds this time-out interval.

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

Время ожидания этого метода истекает после интервала, который равен значению времени ожидания по умолчанию для домена приложения, в котором он вызывается.This method times out after an interval that is equal to the default time-out value of the application domain in which it is called. Если для домена приложения не определено значение времени ожидания, то используется значение InfiniteMatchTimeout, запрещающее истечение времени ожидания метода.If a time-out value has not been defined for the application domain, the value InfiniteMatchTimeout, which prevents the method from timing out, is used. Для получения нескольких совпадений Matches(String, String, RegexOptions, TimeSpan)шаблонов рекомендуется использовать статический метод, который позволяет задать интервал времени ожидания.The recommended static method for retrieving multiple pattern matches is Matches(String, String, RegexOptions, TimeSpan), which lets you set the time-out interval.

Дополнительно

Matches(String, String, RegexOptions, TimeSpan) Matches(String, String, RegexOptions, TimeSpan) Matches(String, String, RegexOptions, TimeSpan) Matches(String, String, RegexOptions, TimeSpan)

Ищет в указанной входной строке все вхождения заданного регулярного выражения, используя указанные параметры сопоставления и интервал времени ожидания.Searches the specified input string for all occurrences of a specified regular expression, using the specified matching options and time-out interval.

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 String String String

Строка для поиска соответствия.The string to search for a match.

pattern
String String String String

Шаблон регулярного выражения для сопоставления.The regular expression pattern to match.

options
RegexOptions RegexOptions RegexOptions RegexOptions

Побитовая комбинация значений перечисления, задающая параметры для сопоставления.A bitwise combination of the enumeration values that specify options for matching.

matchTimeout
TimeSpan TimeSpan TimeSpan TimeSpan

Интервал времени ожидания или InfiniteMatchTimeout, чтобы указать, что метод не должен превышать время ожидания.A time-out interval, or InfiniteMatchTimeout to indicate that the method should not time out.

Возвраты

Коллекция объектов Match, найденных при поиске.A collection of the Match objects found by the search. Если соответствующие объекты не найдены, метод возвращает пустой объект коллекции.If no matches are found, the method returns an empty collection object.

Исключения

Произошла ошибка анализа регулярного выражения.A regular expression parsing error occurred.

Значение параметра input или patternnull.input or pattern is null.

options не является допустимой битовой комбинацией значений RegexOptions .options is not a valid bitwise combination of RegexOptions values.

- или --or- Значение параметра matchTimeout отрицательное, равно нулю или больше, чем приблизительно 24 дня.matchTimeout is negative, zero, or greater than approximately 24 days.

Примеры

В следующем примере вызывается Matches(String, String, RegexOptions, TimeSpan) метод для выполнения сравнения с учетом регистра, совпадающего с любым словом в предложении, заканчивающемся на «ES».The following example calls the Matches(String, String, RegexOptions, TimeSpan) method to perform a case-sensitive comparison that matches any word in a sentence that ends in "es". Затем он вызывает Matches(String, String, RegexOptions, TimeSpan) метод, чтобы выполнить сравнение шаблона с входной строкой без учета регистра.It then calls the Matches(String, String, RegexOptions, TimeSpan) method to perform a case-insensitive comparison of the pattern with the input string. В обоих случаях интервал времени ожидания устанавливается равным одной секунде.In both cases, the time-out interval is set to one second. Как видно из выходных данных, два метода возвращают разные результаты.As the output shows, the two methods return different results.

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 определяется, как показано в следующей таблице.The regular expression pattern \b\w+es\b is defined as shown in the following table.

ШаблонPattern ОписаниеDescription
\b Совпадение должно начинаться на границе слова.Begin the match at a word boundary.
\w+ Совпадение с одним или несколькими символами слова.Match one or more word characters.
es Совпадение со строкой литерала "ES".Match the literal string "es".
\b Совпадение должно заканчиваться на границе слова.End the match at a word boundary.

Комментарии

Метод аналогичен Match(String, String, RegexOptions, TimeSpan) методу, за исключением того, что он возвращает сведения обо всех совпадениях, найденных во входной строке, а не на одном совпадении. Matches(String, String, RegexOptions, TimeSpan)The Matches(String, String, RegexOptions, TimeSpan) method is similar to the Match(String, String, RegexOptions, TimeSpan) method, except that it returns information about all the matches found in the input string, instead of a single match. Он эквивалентен следующему коду:It is equivalent to the following code:

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экземпляра.The static Matches methods are equivalent to constructing a Regex object with the specified regular expression pattern and calling the instance method Matches.

pattern Параметр состоит из элементов языка регулярных выражений, которые в символьном виде описывают строку для сопоставления.The pattern parameter consists of regular expression language elements that symbolically describe the string to match. Дополнительные сведения о регулярных выражениях см. в разделе .NET Framework регулярные выражения и Язык регулярных выражений — краткий справочник.For more information about regular expressions, see .NET Framework Regular Expressions and Regular Expression Language - Quick Reference.

Метод использует отложенное вычисление для заполнения возвращаемого MatchCollection объекта. MatchesThe Matches method uses lazy evaluation to populate the returned MatchCollection object. Доступ к членам этой коллекции, MatchCollection.Count например и, MatchCollection.CopyTo приводит к немедленному заполнению коллекции.Accessing members of this collection such as MatchCollection.Count and MatchCollection.CopyTo causes the collection to be populated immediately. Чтобы воспользоваться преимуществами отложенного вычисления, необходимо выполнить итерацию коллекции, используя конструкцию, foreach например C# в For Eachи...NextTo take advantage of lazy evaluation, you should iterate the collection by using a construct such as foreach in C# and For EachNext в Visual Basic.in Visual Basic.

Из-за отложенного вычисления вызов Matches метода не RegexMatchTimeoutException вызывает исключение.Because of its lazy evaluation, calling the Matches method does not throw a RegexMatchTimeoutException exception. Однако при выполнении операции над MatchCollection объектом, возвращаемым этим методом, возникает исключение, если операция сопоставления превышает этот интервал времени ожидания, заданныйmatchTimeout параметром.However, an exception is thrown when an operation is performed on the MatchCollection object returned by this method, if a matching operation exceeds this time-out interval specified by thematchTimeout parameter.

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

Рекомендуется присвоить matchTimeout параметру соответствующее значение, например две секунды.We recommend that you set the matchTimeout parameter to an appropriate value, such as two seconds. Если вы отключаете время ожидания, указав InfiniteMatchTimeout, механизм регулярных выражений обеспечивает немного более высокую производительность.If you disable time-outs by specifying InfiniteMatchTimeout, the regular expression engine offers slightly better performance. Однако время ожидания следует отключить только при следующих условиях.However, you should disable time-outs only under the following conditions: — Если входные данные, обрабатываемые регулярным выражением, являются производными от известного и надежного источника или состоят из статического текста.- When the input processed by a regular expression is derived from a known and trusted source or consists of static text. Это исключает текст, введенный пользователями динамически.This excludes text that has been dynamically input by users.

— При тщательном тестировании шаблона регулярного выражения для обеспечения эффективной обработки совпадений, несоответствий и близких соответствий.- When the regular expression pattern has been thoroughly tested to ensure that it efficiently handles matches, non-matches, and near matches.

— Если шаблон регулярного выражения не содержит элементов языка, которые вызывают избыточный поиск с возвратом при обработке близкого соответствия.- When the regular expression pattern contains no language elements that are known to cause excessive backtracking when processing a near match.

Дополнительно

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