正则表达式匹配的结果不一致[重复]
Posted
技术标签:
【中文标题】正则表达式匹配的结果不一致[重复]【英文标题】:Inconsistent result of regex match [duplicate] 【发布时间】:2019-07-11 21:22:16 【问题描述】:我想从这个1h30m45s
解析为与1h
、30m
、45s
组匹配的集合。
我管理过这样的事情:
var matches = Regex.Match(input, @"(\d+[ms|s|m|h|d])");
不幸的是,我收到了群组:1h
和 1h
。那里有什么问题?我在Regex101 上尝试了同样的方法,它似乎有效。
【问题讨论】:
Groups[0]
是完全匹配,而Groups[1]
是第一个捕获组
@Xerillio 那么为什么在 c# 中30m
不在任何组中?
请参阅this Q&A 了解更多关于组、捕获和匹配的信息。
【参考方案1】:
致电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();
组是不必要的。
【讨论】:
以上是关于正则表达式匹配的结果不一致[重复]的主要内容,如果未能解决你的问题,请参考以下文章