Match Class
一、範例
1、
using System;
using System.Text.RegularExpressions;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
try
{
Match m = Regex.Match("123456789", @"\d{3}");
while (m.Success)
{
Console.WriteLine("'{0}' found in the source code at position {1}.", m.Value, m.Index);
m = m.NextMatch();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
Console.ReadKey();
}
}
}
}
執行結果為
二、Match Class 屬性有
1、Captures:當一組 Groups 擁有多組符合時,可以 iterate 全部值出來。
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string input = "This is a sentence. This is another sentence.";
string pattern = @"\b(\w+\s*)+\.";
Match match = Regex.Match(input, pattern);
if (match.Success)
{
Console.WriteLine("Matched text: {0}", match.Value);
for (int groupsCount = 1; groupsCount < match.Groups.Count; groupsCount++)
{
Console.WriteLine(" Group {0}: {1}", groupsCount, match.Groups[groupsCount].Value);
int captureCount = 0;
foreach (Capture capture in match.Groups[groupsCount].Captures)
{
Console.WriteLine(" Capture {0}: {1}", captureCount, capture.Value);
captureCount++;
}
}
}
}
}
執行結果
說明:
a、第一次 Regex.Match() 會 match 到 「This is a sentence.」,下一次才是「This is another sentence.」。
b、RegexOptions 預設是 LeftToRight,此作用將會使一組 Groups 擁有多組符合時,
將會回傳最後一組值,也就是最右邊那一組「sentence」。
c、Captures 的作用為當一組 Groups 擁有多組符合時,可以 iterate 全部值出來。
2、Groups:取出這次比對的結果之群組。
using System;
using System.Text.RegularExpressions;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
try
{
Match m = Regex.Match("123abc456def789", @"(\d{3})([a-z]{3})");
while (m.Success)
{
for (int i = 0; i < m.Groups.Count; i++)
{
if (i == 0)
{
Console.WriteLine("the couple group is: {0}", m.Groups[i]);
Console.WriteLine("the couple group is: {0}", m.Value);
}
else
{
Console.WriteLine("the couple group the NO{0} group is: {1}", i, m.Groups[i].Value);
}
}
m = m.NextMatch();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
Console.ReadKey();
}
}
}
}
執行結果為
說明:
a、Groups[0] 固定是整組所比對到的值,相等於 Match.Value 屬性。
b、其後的 Groups[1]、Groups[2] 才是該組各別所比對到的值。
3、Index:指出所比對到的位置。(index 從 0 位置開始算起)
4、Success:取出這次比對的結果,是否成功或失敗。
5、Value:指出所比對到的值。
三、Match Class 方法有
1、NextMatch():故名思意就是取得下一次的 Match。
參考資料: