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)

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

См. также раздел