Ruby正则表达式字符串匹配t =〜/ ^ \ d {2}(:\ d {2}){2} $ /

时间:2017-02-17 02:50:46

标签: ruby regex string string-matching

我从代码挑战中找到了这个:

def time_correct(t)  
  return unless t =~ /^\d{2}(:\d{2}){2}$/
end

它用于查明是否例如"0;:44:07"是一个常规时间字符串("HH:MM:SS")或不是。 我不明白正则表达式。有人可以向我解释/^\d{2}(:\d{2}){2}$/吗?谢谢!

1 个答案:

答案 0 :(得分:3)

/^\d{2}(:\d{2}){2}$/

  1. /.../分隔正则表达式。
  2. 如果在多行模式下,
  3. ^匹配行的开头,否则匹配字符串的开头。
  4. \d匹配一位数字
  5. {2}声明前面的语句\d必须匹配2次。
  6. (...)分隔捕获组。它将事物组合在一起作为通常的数学括号概念,并允许您使用\i将它们引用到后者,其中i是组的索引。例如,(a)(b),a是第1组,b是第2组。
  7. \d{2}刚刚解释了步骤34
  8. {2}与步骤4相同,但前面是捕获组(:\d{2}),必须重复2次。
  9. 如果在多行模式下,
  10. $匹配行的末尾,否则匹配字符串的结尾。
  11. 如果启用了多行模式,则表达式仅匹配以下内容:

    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