1
我發現這個從代碼的挑戰:
def time_correct(t)
return unless t =~ /^\d{2}(:\d{2}){2}$/
end
它是用來找出是否例如"0;:44:07"
是否爲常規時間字符串("HH:MM:SS"
)。 雖然我不明白這個正則表達式。有人可以向我解釋/^\d{2}(:\d{2}){2}$/
嗎?謝謝!
我發現這個從代碼的挑戰:
def time_correct(t)
return unless t =~ /^\d{2}(:\d{2}){2}$/
end
它是用來找出是否例如"0;:44:07"
是否爲常規時間字符串("HH:MM:SS"
)。 雖然我不明白這個正則表達式。有人可以向我解釋/^\d{2}(:\d{2}){2}$/
嗎?謝謝!
在/^\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
regex101.com是學習和了解正則表達式的很好的資源。見[this](https://regex101.com/r/WIH7FL/1)。檢查右上角的說明部分。 – Tushar
除了正則表達式,該方法可以返回除「nil」以外的任何內容嗎?請注意,正則表達式匹配''99:99:99'',即使這不是一個有效的時間。你提到的「代碼挑戰」的網址是什麼? –
'def time_correct(t) return t if t.nil? || t.empty? return(除非t =〜/^\ d {2}(:\ d {2}){2} $/ t = t.split(「:」)。map(&:to_i) Time.at [0] * 3600 + t [1] * 60 + t [2])。strftime「%H:%M:%S」 end'那是完整的代碼。我只複製並粘貼了我沒有完全理解的那一行。 – Chaoguo0