你如何解释Ruby中发生的事情。 'hello'.match('(。)\ 1' )[0]?

时间:2017-10-14 15:31:55

标签: ruby

在Ruby文档中,它解释了:

'hello'.match('(.)\1')[0]   #=> "ll"

(.)\1如何挑选出“ll”?我用其他单词替换了“你好”,包括双字母,如“再见”和“奶酪”,我看到它一直在挑选双字母。

然后我还用更多双字母扩展了字符串,并在括号中添加了更多.s,如下:

puts 'boooooo'.match('(...)\1')  #=> oooooo

所以我明白了。对应任何字符。但为什么它会返回加倍的字母?

由于

1 个答案:

答案 0 :(得分:2)

你遇到了反对意见。它们匹配先前由捕获组匹配的相同文本(在您的第一个示例中,您的捕获组,内部的parantheses,.,任何字符),并且精确\1指的是第一个捕获组

https://www.regular-expressions.info/backref.html