正規表現の異なる部分に同じグループ名を与えることもできます。 この場合、それぞれに部分にマッチした箇所は同じグループ名を使って参照することができます。 これにより、正規表現中で同じ意味を持つ部分を同一の名前でグループ化することができ、それらのいずれかにマッチした箇所を単一のグループ名で抽出することができます。
正規表現の異なる部分を同じグループ名で参照・抽出する
using System;
using System.Text.RegularExpressions;
class Sample {
static void Main()
{
var text = "02/29/2012 2016-02-29";
// mm/dd/yyyy形式またはyyyy-mm-dd形式の日付
// (それぞれの年部分をグループ名"y"でグループ化)
var pattern = @"\d{2}/\d{2}/(?<y>\d{4})|(?<y>\d{4})-\d{2}-\d{2}";
foreach (Match m in Regex.Matches(text, pattern)) {
// グループ名"y"にマッチした部分を表示
Console.WriteLine(m.Groups["y"].Value);
}
}
}
実行結果
2012 2016