我从代码挑战中找到了这个:
def time_correct(t)
return unless t =~ /^\d{2}(:\d{2}){2}$/
end
它用于查明是否例如"0;:44:07"
是一个常规时间字符串("HH:MM:SS"
)或不是。
我不明白正则表达式。有人可以向我解释/^\d{2}(:\d{2}){2}$/
吗?谢谢!
答案 0 :(得分:3)
在/^\d{2}(:\d{2}){2}$/
:
/.../
分隔正则表达式。^
匹配行的开头,否则匹配字符串的开头。\d
匹配一位数字{2}
声明前面的语句\d
必须匹配2次。(...)
分隔捕获组。它将事物组合在一起作为通常的数学括号概念,并允许您使用\i
将它们引用到后者,其中i
是组的索引。例如,(a)(b),a
是第1组,b
是第2组。\d{2}
刚刚解释了步骤3
和4
。{2}
与步骤4
相同,但前面是捕获组(:\d{2})
,必须重复2次。$
匹配行的末尾,否则匹配字符串的结尾。如果启用了多行模式,则表达式仅匹配以下内容:
22:33:44
02:33:44
但不是
22:33:44 d
d 22:33:44
f 02:33:44 f
如果未启用多行,则表达式仅匹配包含有效表达式的字符串:
22:33:44
但没有,在带有两行有效字符串的字符串上:
22:33:44
02:33:44
这是实时测试的链接:https://regex101.com/r/cdSdt4/1