1
在Ruby文档,它解释:你如何解释Ruby中发生了什么? 'hello'.match('(。) 1' )[0]?
'hello'.match('(.)\1')[0] #=> "ll"
它是如何(.)\1
挑出 “LL”?我用包括双字母在内的其他单词替代了“你好”,比如“再见”和“奶酪”,我发现它会继续挑选出双字母。
然后我也扩展了更多的双字母串,并添加括号更.S如:
puts 'boooooo'.match('(...)\1') #=> oooooo
所以,我看得出来。对应于任何字符。但为什么它会返回翻倍的字母?
谢谢
首先注意到如果[字符串#匹配](http://ruby-doc.org/core-2.4.0/String.html#method-i-match)的参数是字符串Ruby将其转换为正则表达式:'Regexp.new('(。)\ 1')#=> /(。)\ 1 /'。这通常会写成''hello'[/(。)\ 1 /]#=>“ll',它使用方法[String#[\]](http://ruby-doc.org/core- 2.4.0/String.html#方法-I-5B-5D)。 –