gpt4 book ai didi

ruby - 正则表达式第一次不起作用

转载 作者:数据小太阳 更新时间:2023-10-29 07:24:28 26 4
gpt4 key购买 nike

我有一个字符串,例如02112016。我想从这个字符串中创建一个日期时间。

我试过:

s = "02112016"
s.sub(/(\d{2})(\d{2})(\d{4})/, "#{$1}-#{$2}-#{$3}")

但是有个问题。它返回 "--"

如果我尝试这个 s.sub(/(\d{2})(\d{2})(\d{4})/, "#{$1}-#{$2}-# {$3}") 再次,它有效:"02-11-2016"。现在我可以使用 to_datetime方法。

但是为什么 s.sub(/(\d{2})(\d{2})(\d{4})/, "#{$1}-#{$2} -#{$3}") 第一次工作?

最佳答案

这里真的是一个简单的改动。 $1 和 friend 仅在匹配成功后分配,而不是在匹配本身。如果您想使用立即值,请执行以下操作:

s = "02112016"
s.sub(/(\d{2})(\d{2})(\d{4})/, '\1-\2-\3')

# => "02-11-2016"

这里的 \1 对应于分配给 $1 的内容。如果您使用 gsub,这一点尤其重要,因为 $1 往往是最后一个匹配项,而 \1 是针对每个匹配项单独计算的。

关于ruby - 正则表达式第一次不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40391949/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com