C#简单的正则表达式名称组捕获

时间:2018-05-26 04:11:12

标签: c# regex

我有这个简单的代码来捕获C#中的命名正则表达式组,但只有一个名称组值非空。任何帮助都会非常感激。

var formatter = "yyyy-MM-dd";

var regex = new Regex("(?<month>MM)|(?<day>dd)|(?<year>yyyy|yy)|([^a-zA-Z])");

var match = regex.Match(formatter);

if (match.Success)
{
    var day = match.Groups["day"];
    var month = match.Groups["month"];
    var year = match.Groups["year"];
}

2 个答案:

答案 0 :(得分:2)

由于OR运算符|只有一个会得到一个值。 使用以下

(?<year>yyyy)-(?<month>MM)-(?<day>dd)

答案 1 :(得分:0)

我不太清楚为什么你最后会在([^a-zA-Z])上匹配,但你可能想尝试一下:((?<month>MM)|(?<day>dd)|(?<year>yyyy|yy)|(-))*

如果它对您不起作用,请告诉我您为何与最终部分匹配。