正则表达式匹配结果不一致

时间:2019-02-18 13:15:38

标签: c# regex

我想从此1h30m45s解析为具有组1h30m45s的匹配项。

我管理过这样的事情:

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

不幸的是,我得到了1h1h组。怎么了我在Regex101上尝试了同样的方法,它似乎有效。

1 个答案:

答案 0 :(得分:0)

您只能通过致电Match获得一场比赛。这两个1h仅是组0和组1。组0与匹配项本身相同。

您需要通过致电Matches获得所有匹配项。然后,您可以将所有匹配的字符串转换成这样的列表:

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

该组是不必要的。