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