.NET(C#):Regex的Match,Group,Capture類

來源:互聯網
上載者:User

這三個類都在System.Text.RegularExpressions命名空間內,他們互相保持繼承關係,如:

我們從外往內講起(我覺得這樣更好理解些),首先Match類表示一個最終的匹配,一個正則不一定只有一個匹配,這個可以通過Match.NextMatch來嘗試下面的匹配。而Regex中的所有組(Group)可以通過Match的Groups屬性得到。組可以通過索引值得到,也可以通過名稱得到。(沒有名稱的組排在有名稱組的前面),不過注意的是所有組都是以1開始的。以0開始的那個組(Groups[0])代表著整個Regex(可以不整個Regex看成一個最大的組)。

 

在組內(Group類),可以通過Captures擷取組的捕獲資訊(對應Capture類)。Group有一個Success屬性代表捕獲是否成功,實際上就是通過判斷Captures的Count是不是等於0.

這個捕獲(Capture類)代表組的具體匹配位置,Index屬性可以擷取匹配位置在整個字串中的索引值,還是Value代表匹配的字串值。Length就是匹配字串值的長度。

最後注意Capture,Group和Match類有繼承關係的,即Capture的成員Group和Match都會有,Group的成員Match也會有的。

最後看MSDN上的一個樣本(引用自:http://msdn.microsoft.com/zh-cn/library/system.text.regularexpressions.capture.aspx)

 

代碼:

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);

            }

        }

    }

}

 

輸出:

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.