正则表达式匹配的结果不一致[重复]

Posted

技术标签:

【中文标题】正则表达式匹配的结果不一致[重复]【英文标题】:Inconsistent result of regex match [duplicate] 【发布时间】:2019-07-11 21:22:16 【问题描述】:

我想从这个1h30m45s 解析为与1h30m45s 组匹配的集合。

我管理过这样的事情:

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

不幸的是,我收到了群组:1h1h。那里有什么问题?我在Regex101 上尝试了同样的方法,它似乎有效。

【问题讨论】:

Groups[0] 是完全匹配,而Groups[1] 是第一个捕获组 @Xerillio 那么为什么在 c# 中30m 不在任何组中? 请参阅this Q&A 了解更多关于组、捕获和匹配的信息。 【参考方案1】:

致电Match 只会获得一场比赛。两个1hs只是0组和1组。而0组和比赛本身是一样的。

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

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

组是不必要的。

【讨论】:

以上是关于正则表达式匹配的结果不一致[重复]的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式字符与grep一致重复n次或更多次

正则表达式不匹配,不知道为啥[重复]

正则表达式反向引用乘法[重复]

python中正则表达式在中文字符串匹配时的坑

正则表达式:一种特殊情况不匹配[重复]

数据库笔记-SQL过滤(LIKE&正则表达式)