string text = "1A 2B 3C 4D 5E 6F 7G 8H 9I 10J 11Q 12J 13K 14L 15M 16N ffee80 #800080";
Regex rgx = new Regex(@"((\d+)([a-z]))\s+", RegexOptions.IgnoreCase);
MatchCollection mm = rgx.Matches(text);
string x=mm[5].Groups[2].Captures[0].Value; //x為第六個集合 第二組 的值 6
/// <summary>
/// 顯示Match內多個Group的例子
/// </summary>
public void ShowStructure()
{
//要匹配的字符串
string text = "1A 2B 3C 4D 5E 6F 7G 8H 9I 10J 11Q 12J 13K 14L 15M 16N ffee80 #800080";
//正則表達式
string pattern = @"((\d+)([a-z]))\s+";
//使用RegexOptions.IgnoreCase枚舉值表示不區分大小寫
Regex r = new Regex(pattern, RegexOptions.IgnoreCase);
//使用正則表達式匹配字符串,僅返回一次匹配結果
Match m = r.Match(text);
while (m.Success)
{
//顯示匹配開始處的索引值和匹配到的值
System.Console.WriteLine("Match=[" + m + "]");
CaptureCollection cc = m.Captures;
foreach (Capture c in cc)
{
Console.WriteLine("\tCapture=[" + c + "]");
}
for (int i = 0; i < m.Groups.Count; i++)
{
Group group = m.Groups[i];
System.Console.WriteLine("\t\tGroups[{0}]=[{1}]", i, group);
for (int j = 0; j < group.Captures.Count; j++)
{
Capture capture = group.Captures[j];
Console.WriteLine("\t\t\tCaptures[{0}]=[{1}]", j, capture);
}
}
//進行下一次匹配.
m = m.NextMatch();
}
}
其它常見C#正則表達式類:
Regex 類表示不可變(只讀)的正則表達式。它還包含各種靜態方法,允許在不顯式創建其他類的實例的情況下使用其他正則表達式類。
Match 類表示正則表達式匹配操作的結果。Match 類的 Match.Success 匹配是否成功。Match.Index 返回第一個匹配的位置。
MatchCollection 類表示成功的【非重疊】匹配項的序列。MatchCollection 的實例是由 Regex.Matches 方法返回的。
GroupCollection 類表示被捕獲的組的集合,並在單個匹配項中返回該捕獲組的集合。GroupCollection 的實例在 Match.Groups 屬性返回的集合中返回。
CaptureCollection 類表示捕獲的子字符串的序列,並返回由單個捕獲組所執行的捕獲集。由於限定符,捕獲組可以在單個匹配中捕獲多個字符串。Captures 屬性(CaptureCollection 類的對象)作為 Match 和 Group 類的成員提供,目的是便於對捕獲的子字符串的集合進行訪問。
Group 類表示來自單個捕獲組的結果。因為 Group 可以在單個匹配中捕獲零個、一個或更多的字符串(使用限定符),所以它包含 Capture 對象的集合。因為 Group 繼承自 Capture,所以可以直接訪問最后捕獲的子字符串(Group 實例本身等價於 Captures 屬性返回的集合的最后一項)。
Capture 類包含來自單個子表達式捕獲的結果。