我正在努力使用正则表达式。
这是一个示例时间戳:00:00:00.00
(Hour, Minutes, Second.Decimal)。我也希望这个值匹配00:0:0.00
注意,租赁零在中心是可选的。
我正在使用这个:[1-60]:[1-60]:[1-60].[1-100]
,但这不需要前导零。我想帮助制作一个适用于上面列出的两件事的单一正则表达式。
一个完整的解决方案会很棒,但如果你能指出我正确的方向,那也会很有帮助。
您的解决方案实际上与您所描述的不符;它只会匹配0123456
每个位置序列中的单个数字。你可能想要类似的东西
[0-5]?\d:[0-5]?\d:[0-5]?\d\.\d{1,2}
您的模式还有许多其他问题。[1-60]
是一个字符类。它将匹配单个1
, 2
, 3
, 4
, 5
, 6
, 或0
字符。其次,.
你的模式中的 匹配任何字符而不仅仅是文字.
。
我认为您正在寻找的是这样的东西:
\d{1,2}:\d{1,2}:\d{1,2}\.\d{1,2}
这将匹配任何一位或两位数字,后跟一个字面量:
,然后是任何一位或两位数位,然后是字面量,然后是任意一位或两位数位,然后是字面量:
,然后是任意一位或.
两位数位。
或者要检查仅匹配每个时间组件的特定范围,您可以使用chrylis建议的模式,尽管如果您确实需要这样做,我通常建议实际解析时间值。
你可以做的另一个选择:
(?:\d{1,2}:){2}\d{1,2}\.\d{1,2}
正则表达式:
(?: group, but do not capture (2 times):
\d{1,2} digits (0-9) (between 1 and 2 times)
: ':'
){2} end of grouping
\d{1,2} digits (0-9) (between 1 and 2 times)
\. '.'
\d{1,2} digits (0-9) (between 1 and 2 times)