Match Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет результаты из отдельного совпадения регулярного выражения.
public ref class Match : System::Text::RegularExpressions::Group
public class Match : System.Text.RegularExpressions.Group
[System.Serializable]
public class Match : System.Text.RegularExpressions.Group
type Match = class
inherit Group
[<System.Serializable>]
type Match = class
inherit Group
Public Class Match
Inherits Group
- Наследование
- Атрибуты
Примеры
В следующих примерах используется регулярное выражение Console\.Write(Line)?
. Регулярное выражение интерпретируется следующим образом:
Консоль\. Написать | Совпадение со строкой "Console.Write". Обратите внимание, что символ "." экранируется таким образом, чтобы он интерпретировался как литеральный период, а не как подстановочный знак, соответствующий любому символу. |
(Линия)? | Совпадение с нулевым или единичным вхождением строки "Line". |
Пример 1
В следующем примере вызывается Regex.Matches(String, String) метод для получения всех совпадений шаблона во входной строке. Затем он выполняет итерацию Match объектов в возвращаемом MatchCollection объекте для отображения сведений о каждом совпадении.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string input = "int[] values = { 1, 2, 3 };\n" +
"for (int ctr = values.GetLowerBound(1); ctr <= values.GetUpperBound(1); ctr++)\n" +
"{\n" +
" Console.Write(values[ctr]);\n" +
" if (ctr < values.GetUpperBound(1))\n" +
" Console.Write(\", \");\n" +
"}\n" +
"Console.WriteLine();\n";
string pattern = @"Console\.Write(Line)?";
MatchCollection matches = Regex.Matches(input, pattern);
foreach (Match match in matches)
Console.WriteLine("'{0}' found in the source code at position {1}.",
match.Value, match.Index);
}
}
// The example displays the following output:
// 'Console.Write' found in the source code at position 112.
// 'Console.Write' found in the source code at position 184.
// 'Console.WriteLine' found in the source code at position 207.
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim input As String = "Dim values() As Integer = { 1, 2, 3 }" & vbCrLf & _
"For ctr As Integer = values.GetLowerBound(1) To values.GetUpperBound(1)" & vbCrLf & _
" Console.Write(values(ctr))" & vbCrLf & _
" If ctr < values.GetUpperBound(1) Then Console.Write("", "")" & vbCrLf & _
"Next" & vbCrLf & _
"Console.WriteLine()"
Dim pattern As String = "Console\.Write(Line)?"
Dim matches As MatchCollection = Regex.Matches(input, pattern)
For Each match As Match In matches
Console.WriteLine("'{0}' found in the source code at position {1}.", _
match.Value, match.Index)
Next
End Sub
End Module
' The example displays the following output:
' 'Console.Write' found in the source code at position 115.
' 'Console.Write' found in the source code at position 184.
' 'Console.WriteLine' found in the source code at position 211.
Пример 2
В следующем примере вызываются Match(String, String) методы и NextMatch методы для получения одного совпадения за раз.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string input = "int[] values = { 1, 2, 3 };\n" +
"for (int ctr = values.GetLowerBound(1); ctr <= values.GetUpperBound(1); ctr++)\n" +
"{\n" +
" Console.Write(values[ctr]);\n" +
" if (ctr < values.GetUpperBound(1))\n" +
" Console.Write(\", \");\n" +
"}\n" +
"Console.WriteLine();\n";
string pattern = @"Console\.Write(Line)?";
Match match = Regex.Match(input, pattern);
while (match.Success)
{
Console.WriteLine("'{0}' found in the source code at position {1}.",
match.Value, match.Index);
match = match.NextMatch();
}
}
}
// The example displays the following output:
// 'Console.Write' found in the source code at position 112.
// 'Console.Write' found in the source code at position 184.
// 'Console.WriteLine' found in the source code at position 207.
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim input As String = "Dim values() As Integer = { 1, 2, 3 }" & vbCrLf & _
"For ctr As Integer = values.GetLowerBound(1) To values.GetUpperBound(1)" & vbCrLf & _
" Console.Write(values(ctr))" & vbCrLf & _
" If ctr < values.GetUpperBound(1) Then Console.Write("", "")" & vbCrLf & _
"Next" & vbCrLf & _
"Console.WriteLine()"
Dim pattern As String = "Console\.Write(Line)?"
Dim match As Match = Regex.Match(input, pattern)
Do While match.Success
Console.WriteLine("'{0}' found in the source code at position {1}.", _
match.Value, match.Index)
match = match.NextMatch()
Loop
End Sub
End Module
' The example displays the following output:
' 'Console.Write' found in the source code at position 115.
' 'Console.Write' found in the source code at position 184.
' 'Console.WriteLine' found in the source code at position 211.
Комментарии
Объект Match неизменяем и не имеет открытого конструктора. Экземпляр Match класса возвращается методом Regex.Match и представляет первое совпадение шаблона в строке. Последующие совпадения представлены Match объектами, возвращаемыми методом Match.NextMatch . Кроме того, метод возвращает Regex.Matches объект, состоящий MatchCollection из нуля, одного или нескольких Match объектов.
Regex.Matches Если методу не удается сопоставить шаблон регулярного выражения во входной строке, он возвращает пустой MatchCollection объект. Затем можно использовать конструкцию foreach
в C# или For Each
конструкцию в Visual Basic для итерации коллекции.
Regex.Match Если метод не соответствует шаблону регулярного выражения, он возвращает объект, равный Match Match.Empty. Свойство можно использовать для Success определения успешности совпадения. Ниже приведен пример.
// Search for a pattern that is not found in the input string.
string pattern = "dog";
string input = "The cat saw the other cats playing in the back yard.";
Match match = Regex.Match(input, pattern);
if (match.Success )
// Report position as a one-based integer.
Console.WriteLine("'{0}' was found at position {1} in '{2}'.",
match.Value, match.Index + 1, input);
else
Console.WriteLine("The pattern '{0}' was not found in '{1}'.",
pattern, input);
' Search for a pattern that is not found in the input string.
Dim pattern As String = "dog"
Dim input As String = "The cat saw the other cats playing in the back yard."
Dim match As Match = Regex.Match(input, pattern)
If match.Success Then
' Report position as a one-based integer.
Console.WriteLine("'{0}' was found at position {1} in '{2}'.", _
match.Value, match.Index + 1, input)
Else
Console.WriteLine("The pattern '{0}' was not found in '{1}'.", _
pattern, input)
End If
Если совпадение шаблона выполнено успешно, Value свойство содержит соответствующую подстроку, Index свойство указывает начальную позицию совпадающей подстроки в входной строке, а Length свойство указывает длину сопоставленной подстроки во входной строке.
Так как одно совпадение может включать несколько групп записи, Match имеет Groups свойство, которое возвращает значение GroupCollection. Сам Match экземпляр эквивалентен первому объекту в коллекции (Match.Groups[0]``Match.Groups(0)
в Visual Basic), который представляет все совпадение. Доступ к захваченным группам можно получить в сопоставлении следующими способами:
Элементы объекта можно итерировать GroupCollection с помощью
foreach
конструкции (C#) илиFor Each
(Visual Basic).Свойство можно использовать GroupCollection.Item[Int32] для получения групп по количеству захватываемой группы. Обратите внимание, что можно определить, какие нумерованные группы присутствуют в регулярном выражении, вызвав метод экземпляра Regex.GetGroupNumbers .
Свойство можно использовать GroupCollection.Item[String] для получения групп по имени захватываемой группы. Обратите внимание, что именованные группы можно определить в регулярном выражении, вызвав метод экземпляра Regex.GetGroupNames() .
Свойства
Captures |
Получает коллекцию всех записей, соответствующих группе записи, в порядке, в котором первыми расположены внутренние слева направо (или внутренние справа налево, если регулярное выражение изменено с помощью параметра RightToLeft). Коллекция может иметь ноль и более элементов. (Унаследовано от Group) |
Empty |
Получает пустую группу. Все неудавшиеся совпадения возвращают это пустое совпадение. |
Groups |
Получает коллекцию групп, соответствующих регулярному выражению. |
Index |
Позиция в исходной строке, в которой обнаружен первый символ записанной подстроки. (Унаследовано от Capture) |
Length |
Получает длину записанной подстроки. (Унаследовано от Capture) |
Name |
Возвращает имя группы записи, представляемой текущим экземпляром. (Унаследовано от Group) |
Success |
Получает значение, указывающее на то, успешно ли совпадение. (Унаследовано от Group) |
Value |
Получает записанную подстроку из входной строки. (Унаследовано от Capture) |
ValueSpan |
Возвращает захваченный диапазон из входной строки. (Унаследовано от Capture) |
Методы
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
NextMatch() |
Возвращает новый объект Match с результатами для следующего сопоставления, начиная с позиции, на которой завершилось последнее сопоставление (с символа после последнего сопоставленного символа). |
Result(String) |
Возвращает расширение указанного шаблона замены. |
Synchronized(Match) |
Возвращает экземпляр Match, который эквивалентен одному из предоставленных экземпляров, пригодному для совместного использования несколькими потоками. |
ToString() |
Извлекает записанную подстроку из входной строки путем вызова свойства Value. (Унаследовано от Capture) |