有没有办法让Regex.Match仅提供预期的捕获组?

时间:2019-04-03 18:37:22

标签: c# regex regex-group

c#regex.match似乎起作用的方式是返回的唯一捕获组值包括与模式匹配的整个字符串。相反,我只想要1美元。现在,我必须执行第二步过程以清理结果。有没有一种更清洁的方法可以减少到一级?

var lineText = @"Reservations 03Mar19";
var m1Pattern = @"^\s*Reservations.*\b(\d{2}\w{3}\d{2})$";

Match m1 = Regex.Match(lineText, m1Pattern);
if (m1.Success) MyDate = Regex.Replace(m1.Groups[0].Captures[0].Value, m1Pattern, @"$1");

2 个答案:

答案 0 :(得分:1)

您可以在组中使用?:,告诉正则表达式不要捕获该组:

(?:this group is not captured(but this one is))

比较此Demothis One

这是C# Demo

答案 1 :(得分:0)

使用MyDate = m1.Groups[1].Value应该可以完成您想做的事情。