C# 正则表达式匹配的结果不一致
我想从这个C# 正则表达式匹配的结果不一致,c#,regex,C#,Regex,我想从这个1h30m45s解析到组1h,30m,45s的匹配集合 我做了这样的事情: var list = Regex.Matches(input, @"\d+[ms|s|m|h|d]").Cast<Match>().Select(x => x.Value).ToList(); var matches=Regex.Match(输入@“(\d+[ms|s|m|h|d]) 不幸的是,我得到了组:1h和1h。怎么了?我也试过同样的方法,但似乎有效。通过调用match,您只得到一个匹
1h30m45s
解析到组1h
,30m
,45s
的匹配集合
我做了这样的事情:
var list = Regex.Matches(input, @"\d+[ms|s|m|h|d]").Cast<Match>().Select(x => x.Value).ToList();
var matches=Regex.Match(输入@“(\d+[ms|s|m|h|d])代码>
不幸的是,我得到了组:1h
和1h
。怎么了?我也试过同样的方法,但似乎有效。通过调用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();
var list=Regex.Matches(输入@“\d+[ms|s|m|h|d]”).Cast().选择(x=>x.Value).ToList();
组是不必要的。组[0]
是完全匹配的,而组[1]
是第一个捕获group@Xerillio那么为什么c#30m中的
不在任何组中呢?有关组、捕获和匹配的更多了解,请参阅。