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 объект, который возвращается свойствами и Group.Captures свойствамиMatch.Captures. Однако свойство Match.Captures предоставляет сведения о том же совпадении, что Match и объект.
Если к группе записи не применяется квантификатор, Group.Captures свойство возвращает CaptureCollection объект с одним Capture объектом, предоставляющим сведения о том же захвате, что Group и объект. Если вы применяете квантификатор к группе записи, Group.IndexGroup.Lengthсвойства и Group.Value свойства предоставляют сведения только о последней захваченной группе, а Capture объекты в CaptureCollection предоставленных сведениях обо всех записях вложенных выражений. Пример содержит иллюстрацию.
Свойства
| Имя | Описание |
|---|---|
| Index |
Позиция в исходной строке, в которой найден первый символ захваченной подстроки. |
| Length |
Возвращает длину захваченной подстроки. |
| Value |
Возвращает захваченную подстроку из входной строки. |
| ValueSpan |
Возвращает захваченный диапазон из входной строки. |
Методы
| Имя | Описание |
|---|---|
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| ToString() |
Извлекает захваченную подстроку из входной строки путем вызова Value свойства. |