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.

Комментарии

Matches(String) Метод аналогичен методу Match(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.

Matches Метод использует отложенные вычисления для заполнения возвращенного MatchCollection объекта.The 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.

Исключения

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

Параметр 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.

Комментарии

Matches(String, Int32) Метод аналогичен методу Match(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.

Matches Метод использует отложенные вычисления для заполнения возвращенного MatchCollection объекта.The 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 или pattern имеет значение null.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.

Комментарии

Matches(String, String) Метод аналогичен методу Match(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.

Matches Метод использует отложенные вычисления для заполнения возвращенного MatchCollection объекта.The 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 или pattern имеет значение null.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.

Комментарии

Matches(String, String, RegexOptions) Метод аналогичен методу Match(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.

Matches Метод использует отложенные вычисления для заполнения возвращенного MatchCollection объекта.The 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 или pattern имеет значение null.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.

Комментарии

Matches(String, String, RegexOptions, TimeSpan) Метод аналогичен методу Match(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.

Matches Метод использует отложенные вычисления для заполнения возвращенного MatchCollection объекта.The 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.

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

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