Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式匹配的结果不一致_C#_Regex - Fatal编程技术网

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中的
不在任何组中呢?有关组、捕获和匹配的更多了解,请参阅。