Group Class and Capture Class
一、Group Class
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string input = "abc-bob add-but ";
string pattern = @"(a\w+)-(b\w+)\s";
Match match = Regex.Match(input, pattern);
while (match.Success)
{
for (int groupsCount = 0; groupsCount < match.Groups.Count; groupsCount++)
{
Group g = match.Groups[groupsCount];
Console.WriteLine(g.Value);
}
Console.WriteLine();
match = match.NextMatch();
}
}
}
其結果為
1、Index
指的是各分群的 index
繼承 Capture Class 的 Index 屬性。
2、Length
取得 Value 的字元數
繼承 Capture Class 的 Length 屬性。
3、Value
取得各分群的值
繼承 Capture Class 的 Value 屬性。
4、Name
如果有指定命名群組時,可以用 Name 屬性來取得
5、Success
判斷分群截取成功與否
6、Captures
Captures 屬性的型別是 CaptureCollection,而 CaptureCollection 是由多個 Capture Class 所組成。
在每一次的群組截取中,通常一個分群只會擁有一個值,此時 CaptureCollection 的數量為 1;
如果在每一次的群組截取中,一個分群擁有多種符合值時,CaptureCollection 的數量將會有多個。
二、Capture Class
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string input = "abc,ade,-bfg,bhi, ajk,alm,-bno,bpq, ";
string pattern = @"(a\w+,)+-(b\w+,)+\s";
Match match = Regex.Match(input, pattern);
while (match.Success)
{
for (int groupsCount = 0; groupsCount < match.Groups.Count; groupsCount++)
{
Group g = match.Groups[groupsCount];
Console.WriteLine("Group.Value: " + g.Value);
foreach (Capture capture in g.Captures)
{
Console.WriteLine(" Capture.Value: {0}", capture.Value);
}
}
Console.WriteLine();
match = match.NextMatch();
}
}
}
其結果為
1、Index
一個分群裡的每一種符合值的 index
2、Length
一個分群裡的每一種符合值的字元數
3、Value
一個分群裡的每一種符合值
參考資料: