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

一個分群裡的每一種符合值

 

參考資料:

Grouping Constructs and Regular Expression Objects