作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试匹配时间格式。时间可以写成可选的小时、分钟和毫秒。唯一需要的值是秒。所以所有这些时间都写得正确,应该匹配。
10:11:12.123 '10 hours, 11 minutes, 12 seconds and 123 milliseconds
10:11:12 '10 hours, 11 minutes and 12 seconds
11:12.123 '11 minutes, 12 seconds and 123 milliseconds
11:12 '11 minutes and 12 seconds
12.123 '12 seconds and 123 milliseconds
12 '12 seconds
我的正则表达式如下所示:
(?:(?:(\d*):)?(?:(\d*):)?(\d*)(?:\.(\d*))?)
我希望每个组都对应正确的值。所以第 1 组应该总是返回小时,第 2 组应该总是返回分钟,等等......我在
Regex101 中尝试过这个但是正如您在这些结果中看到的那样,当没有时间进行游戏时,第 1 组总是优于第 2 组。它匹配时间
11:12
完美,但它放置
11
在第 1 组中告诉我这是几小时而实际上是几分钟。这并不奇怪,因为该字符串中的分钟数与第 1 组匹配。但这不是我想要的。
最佳答案
您可以将第一个可选组移动到第二个可选组中,以便在一个贪婪匹配组中立即连续尝试它们:
(?:(?:(\d+):)?(\d+):)?(\d+)(?:\.(\d+))?
^^^^^^^^^^^
见
regex demo
(?:(?:(\d+):)?(\d+):)?
- 一个可选的非捕获组匹配一次或零次出现:(?:(\d+):)?
- 可选的非捕获组匹配并将任何一个或多个数字捕获到组 1 中,然后仅匹配 :
(\d+)
- 第 2 组:一位或多位数字 :
- 冒号 (\d+)
- 第 3 组:一位或多位数字 (?:\.(\d+))?
- 一个可选的非捕获组匹配一个点,然后将一个或多个数字捕获到组 4 中。 关于正则表达式匹配错误的可选组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63022249/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!