Capture 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示来自单个成功子表达式捕获的结果。
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 属性,从输入的字符串中检索捕获的子字符串。 |