2017-10-14 76 views
1

在Ruby文档,它解释:你如何解释Ruby中发生了什么? 'hello'.match('(。) 1' )[0]?

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

它是如何(.)\1挑出 “LL”?我用包括双字母在内的其他单词替代了“你好”,比如“再见”和“奶酪”,我发现它会继续挑选出双字母。

然后我也扩展了更多的双字母串,并添加括号更.S如:

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

所以,我看得出来。对应于任何字符。但为什么它会返回翻倍的字母?

谢谢

+0

首先注意到如果[字符串#匹配](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)。 –

回答

相关问题