Поделиться через


Capture Класс

Определение

Представляет результаты из одной успешной записи части выражения.

public ref class Capture
public class Capture
[System.Serializable]
public class Capture
type Capture = class
[<System.Serializable>]
type Capture = class
Public Class Capture
Наследование
Capture
Производный
Атрибуты

Примеры

В следующем примере определяется регулярное выражение, соответствующее предложениям, которые не содержат знаков препинания, за исключением точки (".").

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = "Yes. This dog is very friendly.";
      string pattern = @"((\w+)[\s.])+";
      foreach (Match match in Regex.Matches(input, pattern))
      {
         Console.WriteLine("Match: {0}", match.Value);
         for (int groupCtr = 0; groupCtr < match.Groups.Count; groupCtr++)
         {
            Group group = match.Groups[groupCtr];
            Console.WriteLine("   Group {0}: {1}", groupCtr, group.Value);
            for (int captureCtr = 0; captureCtr < group.Captures.Count; captureCtr++)
               Console.WriteLine("      Capture {0}: {1}", captureCtr, 
                                 group.Captures[captureCtr].Value);
         }                      
      }
   }
}
// The example displays the following output:
//       Match: Yes.
//          Group 0: Yes.
//             Capture 0: Yes.
//          Group 1: Yes.
//             Capture 0: Yes.
//          Group 2: Yes
//             Capture 0: Yes
//       Match: This dog is very friendly.
//          Group 0: This dog is very friendly.
//             Capture 0: This dog is very friendly.
//          Group 1: friendly.
//             Capture 0: This
//             Capture 1: dog
//             Capture 2: is
//             Capture 3: very
//             Capture 4: friendly.
//          Group 2: friendly
//             Capture 0: This
//             Capture 1: dog
//             Capture 2: is
//             Capture 3: very
//             Capture 4: friendly
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim input As String = "Yes. This dog is very friendly."
      Dim pattern As String = "((\w+)[\s.])+"
      For Each match As Match In Regex.Matches(input, pattern)
         Console.WriteLine("Match: {0}", match.Value)
         For groupCtr As Integer = 0 To match.Groups.Count - 1
            Dim group As Group = match.Groups(groupCtr)
            Console.WriteLine("   Group {0}: {1}", groupCtr, group.Value)
            For captureCtr As Integer = 0 To group.Captures.Count - 1
               Console.WriteLine("      Capture {0}: {1}", captureCtr, _
                                 group.Captures(captureCtr).Value)
            Next
         Next                      
      Next
   End Sub
End Module
' The example displays the following output:
'       Match: Yes.
'          Group 0: Yes.
'             Capture 0: Yes.
'          Group 1: Yes.
'             Capture 0: Yes.
'          Group 2: Yes
'             Capture 0: Yes
'       Match: This dog is very friendly.
'          Group 0: This dog is very friendly.
'             Capture 0: This dog is very friendly.
'          Group 1: friendly.
'             Capture 0: This
'             Capture 1: dog
'             Capture 2: is
'             Capture 3: very
'             Capture 4: friendly.
'          Group 2: friendly
'             Capture 0: This
'             Capture 1: dog
'             Capture 2: is
'             Capture 3: very
'             Capture 4: friendly

Шаблон регулярного выражения ((\w+)[\s.])+ определяется, как показано в следующей таблице. Обратите внимание, что в этом регулярном выражении квантификатор (+) применяется ко всему регулярному выражению.

Шаблон Описание
(\w+) Совпадение с одним или несколькими символами слова. Это вторая группа записи.
[\s.]) Сопоставление символа пробела или точки (".").
((\w+)[\s.]) Совпадение с одним или несколькими знаками слов, за которыми следует пробел или точка ("."). Это первая группа записи.
((\w+)[\s.])+ Совпадение с одним или несколькими вхождениями слов или символов, за которыми следует пробел или точка (".").

В этом примере входная строка состоит из двух предложений. Как видно из выходных данных, первое предложение состоит только из одного слова, поэтому CaptureCollection объект имеет один Capture объект, представляющий тот же захват, что и Group объект . Второе предложение состоит из нескольких слов, поэтому Group объекты содержат только сведения о последнем сопоставлении выражения. Группа 1, представляющая первый захват, содержит последнее слово в предложении с закрывающей точкой. Группа 2, представляющая второй захват, содержит последнее слово в предложении. Capture Однако объекты в объекте группы CaptureCollection фиксируют каждое совпадение с вложенными выражениями. Объекты Capture в первой коллекции записей группы записи содержат сведения о каждом захваченном слове и символе пробела или точке. Объекты Capture во второй коллекции записей группы записи содержат сведения о каждом записанном слове.

Комментарии

Объект Capture является неизменяемым и не имеет открытого конструктора. Экземпляры возвращаются через CaptureCollection объект , который возвращается свойствами Match.Captures и Group.Captures . Однако свойство предоставляет сведения о том же совпадении, Match.Captures что и Match объект .

Если квантификатор не применяется к захватываемой группе, Group.Captures свойство возвращает CaptureCollection с одним Capture объектом, который предоставляет сведения о том же захвате, что и Group объект . Если вы применяете квантификатор к захватываемой группе, Group.Indexсвойства , Group.Lengthи Group.Value предоставляют сведения только о последней захваченной группе, тогда как Capture объекты в CaptureCollection предоставляют сведения обо всех записях вложенных выражений. Иллюстрация приведена в примере.

Свойства

Index

Позиция в исходной строке, в которой обнаружен первый символ записанной подстроки.

Length

Получает длину записанной подстроки.

Value

Получает записанную подстроку из входной строки.

ValueSpan

Получает захваченный диапазон из входной строки.

Методы

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Извлекает записанную подстроку из входной строки путем вызова свойства Value.

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

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