REGEX匹配的结果不一致



我想从此1h30m45s分析到与组1h30m45s

的匹配集合

我管理了这样的事情:

var matches = Regex.Match(input, @"(d+[ms|s|m|h|d])");

不幸的是,我正在获得组:1h1h。那里怎么了?我在Regex101上尝试过同样的尝试,并且似乎可以工作。

您仅通过调用Match来获得一场匹配。两个1h S仅是组0和第1组。组0与比赛本身相同。

您需要通过调用Matches来获取所有匹配。然后,您可以将所有匹配的字符串转换为这样的列表:

var list = Regex.Matches(input, @"d+[ms|s|m|h|d]").Cast<Match>().Select(x => x.Value).ToList();

组是不必要的。

最新更新