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

标签 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}$/ 吗?谢谢!

最佳答案

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

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

如果启用了多行模式,您的表达式只会匹配以下内容:

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

关于Ruby 正则表达式字符串匹配 t =~/^\d{2}( :\d{2}){2}$/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42288545/

相关文章:

ruby-on-rails - Rails : Skinny Controller vs. Fat Model,还是我应该让我的 Controller 厌食?

ruby - 语法错误,意外 ')' ,期望 '='

ruby-on-rails - 试图在 Ubuntu 上的 rails 4 上安装 ruby​​ 和 ruby​​?

regex - Linux递归地用下划线替换所有目录的句点和除最后一个句点之外的所有文件

string - 将 urlencoded URL 作为参数传递给 CakePHP 的 Controller / Action

将字符串输入与另一个字符串进行比较

ruby-on-rails - Rails Brakeman 警告 : Dynamic Render Path false alarm?

regex - Oracle正则表达式匹配所有单词忽略顺序

python - 如何只提取数组名称和括号内的内容,并使它们成为键值对?

python - 两个字符串匹配的百分比是多少?