为什么 gsub 的 '\1' 捕获组会产生这个字符串?

  • 本文关键字:字符串 gsub ruby regex gsub
  • 更新时间 :
  • 英文 :


我很困惑为什么我要通过'1'分组来捕获这个模式。我每次捕获两个数字,但是为什么它在这里跳过:

"123 456 789".gsub(/(d)(d)/, '1')
=> "13 46 79"

我可以理解''给我原始字符串:

"123 456 789".gsub(/(d)(d)/, '')
=> "123 456 789"

这也让我感到困惑,但一旦我知道'1'在做什么,我就能理解'2'了:

"123 456 789".gsub(/(d)(d)/, '2')
=> "23 56 89"

regex匹配"12", "45", "78", gsub,分别用"1", "4", "7"代替,得到"13 46 79"

要获取12 45 78,您需要使用

(d)db

并替换为1

看到演示

在这里,我们匹配一个数字并捕获它((d)),然后我们匹配另一个数字(d),正好在词边界b之前。

IDEONE演示:

puts "123 456 789".gsub(/(d)db/, '1')

相关内容

  • 没有找到相关文章

最新更新