日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Match类

發布時間:2025/3/19 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Match类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  Regex在匹配的時候,常常會返回一個Match類的對象,今天就來看看怎么玩這個對象。

一、屬性

Captures   按從里到外、從左到右的順序獲取由捕獲組匹配的所有捕獲的集合(如果正則表達式用 RegexOptions..::.RightToLeft 選項修改了,則順序為按從里到外、       從右到左)。該集合可以有零個或更多的項。
Empty    ?獲取空組。所有失敗的匹配都返回此空匹配。
Groups    ??獲取由正則表達式匹配的組的集合。
Index     ?原始字符串中發現捕獲的子字符串的第一個字符的位置。
Length    ??捕獲的子字符串的長度。
Success    ?獲取一個值,該值指示匹配是否成功。
Value     從輸入字符串中獲取捕獲的子字符串。

二、方法

NextMatch     從上一個匹配結束的位置(即在上一個匹配字符之后的字符)開始返回一個包含下一個匹配結果的新 Match。
Result       返回對指定替換模式的擴展。
Synchronized   ?返回一個與提供的實例等效的 Match 實例,該實例適合在多個線程間共享。
ToString      ?從輸入字符串中獲取捕獲的子字符串。 (繼承自 Capture。)

static void Main(string[] args){Regex reg = new Regex(@"(?<數字分組>\d+)abc");Match m = reg.Match("s123abcdefg");Console.WriteLine(m.Success); //輸出 True 指示匹配是否成功Console.WriteLine(m.Value); //輸出 123abc 獲取匹配到的子字符串Console.WriteLine(m.Length); //輸出 6 匹配的子字符串的長度,其實m.value.Length不就行了嗎Console.WriteLine(m.Index); //輸出 1 獲取匹配到的子字符串的第一個字符在整個輸入字符串的位置GroupCollection GColl = m.Groups;foreach (Group g in GColl){ // 整個組 自定義組Console.WriteLine(g.Success); //輸出 True TrueConsole.WriteLine(g.Index); //輸出 1 1Console.WriteLine(g.Length); //輸出 6 3Console.WriteLine(g.Value); //輸出 123abc 123 }Console.WriteLine(Match.Empty); //輸出 空白(啥都不輸出,空匹配,所有失敗的匹配都返回此空匹配)CaptureCollection CColl = m.Captures;foreach (Capture c in CColl){Console.WriteLine(c.Index); //輸出 1Console.WriteLine(c.Length); //輸出 6Console.WriteLine(c.Value); //輸出 123abc }Regex reg2 = new Regex(@"\d+");Match m2 = reg2.Match("123abc456");Console.WriteLine(m2.Value); //輸出 123Match m3 = m2.NextMatch();Console.WriteLine(m3.Value); //輸出 456 Match m4 = Match.Synchronized(m3); //獲取一個與實例等效的Match實例用于多線程共享Console.WriteLine(m4.Value); //輸出 456 Console.WriteLine(m3.ToString()); //輸出 456 Regex reg3 = new Regex(@"\d+");Match m5 = reg3.Match("123ABC");Console.WriteLine(m5.Result("$'")); //輸出 ABC 不要迷惑 這個需要了解下replacement http://www.cnblogs.com/kissdodog/archive/2013/04/25/3043173.html Console.ReadKey();}

  另外再附上兩個,輸入字符串中匹配所有符合條件的例子:

static void Main(string[] args){Regex reg = new Regex(@"\d+");//第一種方法是利用Matches方法,返回所有匹配到的字符串的集合MatchCollection MColl = reg.Matches("123abc456");foreach (Match m in MColl){Console.WriteLine(m.Value); //輸出 123 456 }//第二種方法是利用Match類的NextMatch()方法Match m2 = reg.Match("123abc456");while (m2.Success){Console.WriteLine(m2.Value); //同樣輸出 123 456m2 = m2.NextMatch();}Console.ReadKey();}

?

總結

以上是生活随笔為你收集整理的Match类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。