【发布时间】:2017-07-06 10:13:07
【问题描述】:
我从代码挑战中发现了这一点:
def time_correct(t)
return unless t =~ /^\d{2}(:\d{2}){2}$/
end
它用于找出是否例如"0;:44:07" 是否为常规时间字符串 ("HH:MM:SS")。
我不明白正则表达式。有人可以向我解释/^\d{2}(:\d{2}){2}$/吗?谢谢!
【问题讨论】:
-
regex101.com 是学习和理解正则表达式的好资源。见this。检查右上角的解释部分。
-
除了正则表达式之外,这个方法还能返回
nil以外的任何东西吗?请注意,正则表达式匹配'99:99:99',即使那不是有效时间。您提到的“代码挑战”的 URL 是什么? -
def time_correct(t) return t if t.nil? || t.empty? return unless t =~ /^\d{2}(:\d{2}){2}$/ t = t.split(":").map(&:to_i) Time.at(t[0] * 3600 + t[1] * 60 + t[2]).strftime "%H:%M:%S" end这是完整的代码。我只是复制并粘贴了我不完全理解的行。
标签: ruby regex string string-matching