生活随笔
收集整理的這篇文章主要介紹了
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类的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。