Regex.Matches Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Ищет во входной строке все вхождения регулярного выражения и возвращает все соответствия.
Перегрузки
Matches(String, String, RegexOptions, TimeSpan) |
Ищет в указанной входной строке все вхождения заданного регулярного выражения, используя указанные параметры сопоставления и интервал времени ожидания. |
Matches(String, String, RegexOptions) |
Ищет в указанной входной строке все вхождения заданного регулярного выражения, используя указанные параметры сопоставления. |
Matches(String, Int32) |
Ищет в указанной входной строке все вхождения регулярного выражения, начиная с указанной начальной позиции. |
Matches(String) |
Ищет в указанной входной строке все вхождения регулярного выражения. |
Matches(String, String) |
Ищет в указанной входной строке все вхождения заданного регулярного выражения. |
Matches(String, String, RegexOptions, TimeSpan)
- Исходный код:
- Regex.Match.cs
- Исходный код:
- Regex.Match.cs
- Исходный код:
- Regex.Match.cs
Ищет в указанной входной строке все вхождения заданного регулярного выражения, используя указанные параметры сопоставления и интервал времени ожидания.
public:
static System::Text::RegularExpressions::MatchCollection ^ Matches(System::String ^ input, System::String ^ pattern, System::Text::RegularExpressions::RegexOptions options, TimeSpan matchTimeout);
public static System.Text.RegularExpressions.MatchCollection Matches (string input, string pattern, System.Text.RegularExpressions.RegexOptions options, TimeSpan matchTimeout);
static member Matches : string * string * System.Text.RegularExpressions.RegexOptions * TimeSpan -> System.Text.RegularExpressions.MatchCollection
Public Shared Function Matches (input As String, pattern As String, options As RegexOptions, matchTimeout As TimeSpan) As MatchCollection
Параметры
- input
- String
Строка для поиска соответствия.
- pattern
- String
Шаблон регулярного выражения для сопоставления.
- options
- RegexOptions
Побитовая комбинация значений перечисления, задающая параметры для сопоставления.
- matchTimeout
- TimeSpan
Интервал времени ожидания или InfiniteMatchTimeout, чтобы указать, что метод не должен превышать время ожидания.
Возвращаемое значение
Коллекция объектов Match, найденных при поиске. Если соответствующие объекты не найдены, метод возвращает пустой объект коллекции.
Исключения
Произошла ошибка анализа регулярного выражения.
Параметр input
или pattern
имеет значение null
.
Параметр options
не является допустимой битовой комбинацией значений RegexOptions.
-или-
Значение параметра matchTimeout
отрицательное, равно нулю или больше, чем приблизительно 24 дня.
Примеры
В следующем примере вызывается Matches(String, String, RegexOptions, TimeSpan) метод для выполнения сравнения с учетом регистра, которое соответствует любому слову в предложении, заканчивающемся на "es". Затем он вызывает Matches(String, String, RegexOptions, TimeSpan) метод для сравнения шаблона с входной строкой без учета регистра. В обоих случаях интервал времени ожидания устанавливается в одну секунду. Как видно из выходных данных, два метода возвращают разные результаты.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"\b\w+es\b";
string sentence = "NOTES: Any notes or comments are optional.";
// Call Matches method without specifying any options.
try {
foreach (Match match in Regex.Matches(sentence, pattern,
RegexOptions.None,
TimeSpan.FromSeconds(1)))
Console.WriteLine("Found '{0}' at position {1}",
match.Value, match.Index);
}
catch (RegexMatchTimeoutException) {
// Do Nothing: Assume that timeout represents no match.
}
Console.WriteLine();
// Call Matches method for case-insensitive matching.
try {
foreach (Match match in Regex.Matches(sentence, pattern, RegexOptions.IgnoreCase))
Console.WriteLine("Found '{0}' at position {1}",
match.Value, match.Index);
}
catch (RegexMatchTimeoutException) {}
}
}
// The example displays the following output:
// Found 'notes' at position 11
//
// Found 'NOTES' at position 0
// Found 'notes' at position 11
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim pattern As String = "\b\w+es\b"
Dim sentence As String = "NOTES: Any notes or comments are optional."
' Call Matches method without specifying any options.
For Each match As Match In Regex.Matches(sentence, pattern,
RegexOptions.None,
TimeSpan.FromSeconds(1))
Try
Console.WriteLine("Found '{0}' at position {1}", match.Value, match.Index)
Catch e As RegexMatchTimeoutException
' Do Nothing: Assume that timeout represents no match.
End Try
Next
Console.WriteLine()
' Call Matches method for case-insensitive matching.
Try
For Each match As Match In Regex.Matches(sentence, pattern,
RegexOptions.IgnoreCase,
TimeSpan.FromSeconds(1))
Console.WriteLine("Found '{0}' at position {1}", match.Value, match.Index)
Next
Catch de As RegexMatchTimeoutException
' Do Nothing: Assume that timeout represents no match.
End Try
End Sub
End Module
' The example displays the following output:
' Found 'notes' at position 11
'
' Found 'NOTES' at position 0
' Found 'notes' at position 11
Шаблон регулярного выражения \b\w+es\b
определяется, как показано в следующей таблице.
Шаблон | Описание |
---|---|
\b |
Совпадение должно начинаться на границе слова. |
\w+ |
Совпадение с одним или несколькими символами слова. |
es |
Соответствует строке литерала "es". |
\b |
Совпадение должно заканчиваться на границе слова. |
Комментарии
Метод Matches(String, String, RegexOptions, TimeSpan) аналогичен методу Match(String, String, RegexOptions, TimeSpan) , за исключением того, что он возвращает сведения обо всех совпадениях, найденных во входной строке, а не об одном совпадении. Это эквивалентно следующему коду:
try {
Match match = Regex.Match(input, pattern, options,
TimeSpan.FromSeconds(1));
while (match.Success) {
// Handle match here...
match = match.NextMatch();
}
}
catch (RegexMatchTimeoutException) {
// Do nothing: assume that exception represents no match.
}
Try
Dim match As Match = Regex.Match(input, pattern, options,
TimeSpan.FromSeconds(1))
Do While match.Success
' Handle match here...
match = match.NextMatch()
Loop
Catch e As RegexMatchTimeoutException
' Do nothing: assume that exception represents no match.
End Try
Статические Matches
методы эквивалентны созданию объекта с указанным шаблоном Regex регулярного выражения и вызову метода Matches
экземпляра .
Параметр pattern
состоит из элементов языка регулярных выражений, которые символично описывают соответствующую строку. Дополнительные сведения о регулярных выражениях см. в разделе Регулярные выражения .NET и Язык регулярных выражений — краткий справочник.
Метод Matches использует отложенную оценку для заполнения возвращаемого MatchCollection объекта. Доступ к членам этой коллекции, таким как MatchCollection.Count и MatchCollection.CopyTo , приводит к немедленному заполнению коллекции. Чтобы воспользоваться преимуществами отложенной оценки, следует выполнить итерацию коллекции с помощью конструкции, такой как foreach
в C# и For Each
...Next
в Visual Basic.
Из-за отложенной оценки вызов Matches метода не вызывает RegexMatchTimeoutException исключение. Однако при выполнении MatchCollection операции с объектом, возвращаемым этим методом, возникает исключение, если операция сопоставления превышает этот интервал времени ожидания, указанный параметромmatchTimeout
.
Примечания для тех, кто вызывает этот метод
Рекомендуется задать matchTimeout
для параметра соответствующее значение, например две секунды. Если отключить тайм-ауты, указав InfiniteMatchTimeout, обработчик регулярных выражений обеспечивает немного лучшую производительность. Однако отключать время ожидания следует только при следующих условиях:
Если входные данные, обработанные регулярным выражением, являются производными от известного и доверенного источника или состоят из статического текста. Это исключает текст, который был динамически введен пользователями.
Если шаблон регулярного выражения тщательно протестирован, чтобы убедиться, что он эффективно обрабатывает совпадения, несоответствия и близкие совпадения.
Если шаблон регулярного выражения не содержит языковых элементов, которые, как известно, вызывают чрезмерное восстановление при обработке близкого совпадения.
См. также раздел
Применяется к
Matches(String, String, RegexOptions)
- Исходный код:
- Regex.Match.cs
- Исходный код:
- Regex.Match.cs
- Исходный код:
- Regex.Match.cs
Ищет в указанной входной строке все вхождения заданного регулярного выражения, используя указанные параметры сопоставления.
public:
static System::Text::RegularExpressions::MatchCollection ^ Matches(System::String ^ input, System::String ^ pattern, System::Text::RegularExpressions::RegexOptions options);
public static System.Text.RegularExpressions.MatchCollection Matches (string input, string pattern, System.Text.RegularExpressions.RegexOptions options);
static member Matches : string * string * System.Text.RegularExpressions.RegexOptions -> System.Text.RegularExpressions.MatchCollection
Public Shared Function Matches (input As String, pattern As String, options As RegexOptions) As MatchCollection
Параметры
- input
- String
Строка для поиска соответствия.
- pattern
- String
Шаблон регулярного выражения для сопоставления.
- options
- RegexOptions
Побитовая комбинация значений перечисления, задающая параметры для сопоставления.
Возвращаемое значение
Коллекция объектов Match, найденных при поиске. Если соответствующие объекты не найдены, метод возвращает пустой объект коллекции.
Исключения
Произошла ошибка анализа регулярного выражения.
Параметр input
или pattern
имеет значение null
.
Параметр options
не является допустимой битовой комбинацией значений RegexOptions.
Примеры
В следующем примере вызывается Matches(String, String) метод для идентификации любого слова в предложении, заканчивающемся на "es", а затем вызывается Matches(String, String, RegexOptions) метод для выполнения сравнения шаблона без учета регистра с входной строкой. Как видно из выходных данных, два метода возвращают разные результаты.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"\b\w+es\b";
string sentence = "NOTES: Any notes or comments are optional.";
// Call Matches method without specifying any options.
foreach (Match match in Regex.Matches(sentence, pattern))
Console.WriteLine("Found '{0}' at position {1}",
match.Value, match.Index);
Console.WriteLine();
// Call Matches method for case-insensitive matching.
foreach (Match match in Regex.Matches(sentence, pattern, RegexOptions.IgnoreCase))
Console.WriteLine("Found '{0}' at position {1}",
match.Value, match.Index);
}
}
// The example displays the following output:
// Found 'notes' at position 11
//
// Found 'NOTES' at position 0
// Found 'notes' at position 11
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim pattern As String = "\b\w+es\b"
Dim sentence As String = "NOTES: Any notes or comments are optional."
' Call Matches method without specifying any options.
For Each match As Match In Regex.Matches(sentence, pattern)
Console.WriteLine("Found '{0}' at position {1}", match.Value, match.Index)
Next
Console.WriteLine()
' Call Matches method for case-insensitive matching.
For Each match As Match In Regex.Matches(sentence, pattern, RegexOptions.IgnoreCase)
Console.WriteLine("Found '{0}' at position {1}", match.Value, match.Index)
Next
End Sub
End Module
' The example displays the following output:
' Found 'notes' at position 11
'
' Found 'NOTES' at position 0
' Found 'notes' at position 11
Шаблон регулярного выражения \b\w+es\b
определяется, как показано в следующей таблице.
Шаблон | Описание |
---|---|
\b |
Совпадение должно начинаться на границе слова. |
\w+ |
Совпадение с одним или несколькими символами слова. |
es |
Соответствует строке литерала "es". |
\b |
Совпадение должно заканчиваться на границе слова. |
Комментарии
Метод Matches(String, String, RegexOptions) аналогичен методу Match(String, String, RegexOptions) , за исключением того, что он возвращает сведения обо всех совпадениях, найденных во входной строке, а не об одном совпадении. Это эквивалентно следующему коду:
Match match = Regex.Match(input, pattern, options);
while (match.Success) {
// Handle match here...
match = match.NextMatch();
}
Dim match As Match = Regex.Match(input, pattern, options)
Do While match.Success
' Handle match here...
match = match.NextMatch()
Loop
Статические Matches
методы эквивалентны созданию объекта с указанным шаблоном Regex регулярного выражения и вызову метода Matches
экземпляра .
Параметр pattern
состоит из элементов языка регулярных выражений, которые символично описывают соответствующую строку. Дополнительные сведения о регулярных выражениях см. в разделе Регулярные выражения .NET и Язык регулярных выражений — краткий справочник.
Метод Matches использует отложенную оценку для заполнения возвращаемого MatchCollection объекта. Доступ к членам этой коллекции, таким как MatchCollection.Count и MatchCollection.CopyTo , приводит к немедленному заполнению коллекции. Чтобы воспользоваться преимуществами отложенной оценки, следует выполнить итерацию коллекции с помощью конструкции, такой как foreach
в C# и For Each
...Next
в Visual Basic.
Из-за отложенной оценки вызов Matches(String, String) метода не вызывает RegexMatchTimeoutException исключение. Однако исключение возникает при выполнении MatchCollection операции с объектом, возвращаемым этим методом, если интервал времени ожидания определяется свойством "REGEX_DEFAULT_MATCH_TIMEOUT" текущего домена приложения, а операция сопоставления превышает этот интервал времени ожидания.
Примечания для тех, кто вызывает этот метод
Время ожидания этого метода истекает через интервал, равный значению времени ожидания по умолчанию для домена приложения, в котором он вызывается. Если значение времени ожидания не определено для домена приложения, используется значение InfiniteMatchTimeout, которое предотвращает истечение времени ожидания метода. Рекомендуемый статический метод для получения нескольких совпадений шаблонов — Matches(String, String, RegexOptions, TimeSpan), который позволяет задать интервал времени ожидания.
См. также раздел
Применяется к
Matches(String, Int32)
- Исходный код:
- Regex.Match.cs
- Исходный код:
- Regex.Match.cs
- Исходный код:
- Regex.Match.cs
Ищет в указанной входной строке все вхождения регулярного выражения, начиная с указанной начальной позиции.
public:
System::Text::RegularExpressions::MatchCollection ^ Matches(System::String ^ input, int startat);
public System.Text.RegularExpressions.MatchCollection Matches (string input, int startat);
member this.Matches : string * int -> System.Text.RegularExpressions.MatchCollection
Public Function Matches (input As String, startat As Integer) As MatchCollection
Параметры
- input
- String
Строка для поиска соответствия.
- startat
- Int32
Позиция символа во входной строке, с которой необходимо начать поиск.
Возвращаемое значение
Коллекция объектов Match, найденных при поиске. Если соответствующие объекты не найдены, метод возвращает пустой объект коллекции.
Исключения
input
имеет значение null
.
Параметр startat
имеет значение меньше нуля или больше длины input
.
Примеры
В следующем примере метод используется Match(String) для поиска первого слова в предложении, заканчивающегося на "es", а затем вызывает Matches(String, Int32) метод для определения дополнительных слов, заканчивающихся на "es".
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"\b\w+es\b";
Regex rgx = new Regex(pattern);
string sentence = "Who writes these notes and uses our paper?";
// Get the first match.
Match match = rgx.Match(sentence);
if (match.Success) {
Console.WriteLine("Found first 'es' in '{0}' at position {1}",
match.Value, match.Index);
// Get any additional matches.
foreach (Match m in rgx.Matches(sentence, match.Index + match.Length))
Console.WriteLine("Also found '{0}' at position {1}",
m.Value, m.Index);
}
}
}
// The example displays the following output:
// Found first 'es' in 'writes' at position 4
// Also found 'notes' at position 17
// Also found 'uses' at position 27
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim pattern As String = "\b\w+es\b"
Dim rgx As New Regex(pattern)
Dim sentence As String = "Who writes these notes and uses our paper?"
' Get the first match.
Dim match As Match = rgx.Match(sentence)
If match.Success Then
Console.WriteLine("Found first 'es' in '{0}' at position {1}", _
match.Value, match.Index)
' Get any additional matches.
For Each match In rgx.Matches(sentence, match.Index + match.Length)
Console.WriteLine("Also found '{0}' at position {1}", _
match.Value, match.Index)
Next
End If
End Sub
End Module
' The example displays the following output:
' Found first 'es' in 'writes' at position 4
' Also found 'notes' at position 17
' Also found 'uses' at position 27
Шаблон регулярного выражения \b\w+es\b
определяется, как показано в следующей таблице.
Шаблон | Описание |
---|---|
\b |
Совпадение должно начинаться на границе слова. |
\w+ |
Совпадение с одним или несколькими символами слова. |
es |
Соответствует строке литерала "es". |
\b |
Совпадение должно заканчиваться на границе слова. |
Комментарии
Метод Matches(String, Int32) аналогичен методу Match(String, Int32) , за исключением того, что он возвращает сведения обо всех совпадениях, найденных во входной строке, а не об одном совпадении. Это эквивалентно следующему коду:
Match match = regex.Match(input, startAt);
while (match.Success) {
// Handle match here...
match = match.NextMatch();
}
Dim match As Match = regex.Match(input, startAt)
Do While match.Success
' Handle match here...
match = match.NextMatch()
Loop
Шаблон регулярного Matches(String, Int32) выражения, по которому выполняется поиск метода, определяется вызовом одного из Regex конструкторов класса. Дополнительные сведения об элементах, которые могут формировать шаблон регулярного выражения, см. в разделе Язык регулярных выражений — краткий справочник.
Дополнительные сведения о startat
см. в разделе Примечания статьи Match(String, Int32).
Метод Matches использует отложенную оценку для заполнения возвращаемого MatchCollection объекта. Доступ к членам этой коллекции, таким как MatchCollection.Count и MatchCollection.CopyTo , приводит к немедленному заполнению коллекции. Чтобы воспользоваться преимуществами отложенной оценки, следует выполнить итерацию коллекции с помощью конструкции, такой как foreach
в C# и For Each
...Next
в Visual Basic.
Из-за отложенной оценки вызов Matches(String, Int32) метода не вызывает RegexMatchTimeoutException исключение. Однако исключение возникает при выполнении MatchCollection операции с объектом, возвращаемым этим методом, если MatchTimeout свойство не Regex.InfiniteMatchTimeout имеет значения и операция сопоставления превышает интервал времени ожидания.
См. также раздел
Применяется к
Matches(String)
- Исходный код:
- Regex.Match.cs
- Исходный код:
- Regex.Match.cs
- Исходный код:
- Regex.Match.cs
Ищет в указанной входной строке все вхождения регулярного выражения.
public:
System::Text::RegularExpressions::MatchCollection ^ Matches(System::String ^ input);
public System.Text.RegularExpressions.MatchCollection Matches (string input);
member this.Matches : string -> System.Text.RegularExpressions.MatchCollection
Public Function Matches (input As String) As MatchCollection
Параметры
- input
- String
Строка для поиска соответствия.
Возвращаемое значение
Коллекция объектов Match, найденных при поиске. Если соответствующие объекты не найдены, метод возвращает пустой объект коллекции.
Исключения
input
имеет значение null
.
Примеры
В следующем примере метод используется для идентификации Matches(String) слов в предложении, заканчивающихся на "es".
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"\b\w+es\b";
Regex rgx = new Regex(pattern);
string sentence = "Who writes these notes?";
foreach (Match match in rgx.Matches(sentence))
Console.WriteLine("Found '{0}' at position {1}",
match.Value, match.Index);
}
}
// The example displays the following output:
// Found 'writes' at position 4
// Found 'notes' at position 17
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim pattern As String = "\b\w+es\b"
Dim rgx As New Regex(pattern)
Dim sentence As String = "Who writes these notes?"
For Each match As Match In rgx.Matches(sentence)
Console.WriteLine("Found '{0}' at position {1}", match.Value, match.Index)
Next
End Sub
End Module
' The example displays the following output:
' Found 'writes' at position 4
' Found 'notes' at position 17
Шаблон регулярного выражения \b\w+es\b
определяется, как показано в следующей таблице.
Шаблон | Описание |
---|---|
\b |
Совпадение должно начинаться на границе слова. |
\w+ |
Совпадение с одним или несколькими символами слова. |
es |
Соответствует строке литерала "es". |
\b |
Совпадение должно заканчиваться на границе слова. |
Комментарии
Метод Matches(String) аналогичен методу Match(String) , за исключением того, что он возвращает сведения обо всех совпадениях, найденных во входной строке, а не об одном совпадении. Это эквивалентно следующему коду:
Match match = regex.Match(input);
while (match.Success) {
// Handle match here...
match = match.NextMatch();
}
Dim match As Match = regex.Match(input)
Do While match.Success
' Handle match here...
match = match.NextMatch()
Loop
Коллекция включает только совпадения и завершается при первом несовпаде.
Шаблон регулярного Matches(String) выражения, по которому выполняется поиск метода, определяется вызовом одного из Regex конструкторов класса. Дополнительные сведения об элементах, которые могут формировать шаблон регулярного выражения, см. в разделе Язык регулярных выражений — краткий справочник.
Метод Matches использует отложенную оценку для заполнения возвращаемого MatchCollection объекта. Доступ к членам этой коллекции, таким как MatchCollection.Count и MatchCollection.CopyTo , приводит к немедленному заполнению коллекции. Чтобы воспользоваться преимуществами отложенной оценки, следует выполнить итерацию коллекции с помощью конструкции, такой как foreach
в C# и For Each
...Next
в Visual Basic.
Из-за отложенной оценки вызов Matches(String) метода не вызывает RegexMatchTimeoutException исключение. Однако исключение возникает при выполнении MatchCollection операции с объектом, возвращаемым этим методом, если MatchTimeout свойство не Regex.InfiniteMatchTimeout имеет значения и операция сопоставления превышает интервал времени ожидания.
См. также раздел
Применяется к
Matches(String, String)
- Исходный код:
- Regex.Match.cs
- Исходный код:
- Regex.Match.cs
- Исходный код:
- Regex.Match.cs
Ищет в указанной входной строке все вхождения заданного регулярного выражения.
public:
static System::Text::RegularExpressions::MatchCollection ^ Matches(System::String ^ input, System::String ^ pattern);
public static System.Text.RegularExpressions.MatchCollection Matches (string input, string pattern);
static member Matches : string * string -> System.Text.RegularExpressions.MatchCollection
Public Shared Function Matches (input As String, pattern As String) As MatchCollection
Параметры
- input
- String
Строка для поиска соответствия.
- pattern
- String
Шаблон регулярного выражения для сопоставления.
Возвращаемое значение
Коллекция объектов Match, найденных при поиске. Если соответствующие объекты не найдены, метод возвращает пустой объект коллекции.
Исключения
Произошла ошибка анализа регулярного выражения.
Параметр input
или pattern
имеет значение null
.
Примеры
В следующем примере метод используется для идентификации Matches(String, String) любого слова в предложении, заканчивающегося на "es".
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"\b\w+es\b";
string sentence = "Who writes these notes?";
foreach (Match match in Regex.Matches(sentence, pattern))
Console.WriteLine("Found '{0}' at position {1}",
match.Value, match.Index);
}
}
// The example displays the following output:
// Found 'writes' at position 4
// Found 'notes' at position 17
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim pattern As String = "\b\w+es\b"
Dim sentence As String = "Who writes these notes?"
For Each match As Match In Regex.Matches(sentence, pattern)
Console.WriteLine("Found '{0}' at position {1}", match.Value, match.Index)
Next
End Sub
End Module
' The example displays the following output:
' Found 'writes' at position 4
' Found 'notes' at position 17
Шаблон регулярного выражения \b\w+es\b
определяется, как показано в следующей таблице.
Шаблон | Описание |
---|---|
\b |
Совпадение должно начинаться на границе слова. |
\w+ |
Совпадение с одним или несколькими символами слова. |
es |
Соответствует строке литерала "es". |
\b |
Совпадение должно заканчиваться на границе слова. |
Комментарии
Метод Matches(String, String) аналогичен методу Match(String, String) , за исключением того, что он возвращает сведения обо всех совпадениях, найденных во входной строке, а не об одном совпадении. Это эквивалентно следующему коду:
Match match = Regex.Match(input, pattern);
while (match.Success) {
// Handle match here...
match = match.NextMatch();
}
Dim match As Match = Regex.Match(input, pattern)
Do While match.Success
' Handle match here...
match = match.NextMatch()
Loop
Статические Matches
методы эквивалентны созданию объекта с указанным шаблоном Regex регулярного выражения и вызову метода Matches
экземпляра .
Параметр pattern
состоит из элементов языка регулярных выражений, которые символично описывают соответствующую строку. Дополнительные сведения о регулярных выражениях см. в разделе Регулярные выражения .NET и Язык регулярных выражений — краткий справочник.
Метод Matches использует отложенную оценку для заполнения возвращаемого MatchCollection объекта. Доступ к членам этой коллекции, таким как MatchCollection.Count и MatchCollection.CopyTo , приводит к немедленному заполнению коллекции. Чтобы воспользоваться преимуществами отложенной оценки, следует выполнить итерацию коллекции с помощью конструкции, такой как foreach
в C# и For Each
...Next
в Visual Basic.
Из-за отложенной оценки вызов Matches(String, String) метода не вызывает RegexMatchTimeoutException исключение. Однако исключение возникает при выполнении MatchCollection операции с объектом, возвращаемым этим методом, если интервал времени ожидания определяется свойством "REGEX_DEFAULT_MATCH_TIMEOUT" текущего домена приложения, а операция сопоставления превышает этот интервал времени ожидания.
Примечания для тех, кто вызывает этот метод
Время ожидания этого метода истекает через интервал, равный значению времени ожидания по умолчанию для домена приложения, в котором он вызывается. Если значение времени ожидания не определено для домена приложения, используется значение InfiniteMatchTimeout, которое предотвращает истечение времени ожидания метода. Для получения нескольких совпадений Matches(String, String, RegexOptions, TimeSpan)шаблонов рекомендуется использовать статический метод , который позволяет указать интервал времени ожидания.