【问题标题】: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 了解更多关于组、捕获和匹配的信息。

标签: c# regex


【解决方案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();

组是不必要的。

【讨论】:

    猜你喜欢
    • 2016-11-10
    • 1970-01-01
    • 2013-10-13
    • 2014-09-26
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多