2011-06-22 88 views
8

我注意到大禮包庫一行代碼:

label_with_first_letters_capitalized = t(options[:label]).gsub(/\b\w/)#{$&.upcase} 

有人能告訴我什麼是「$ &」是什麼意思?謝謝!

回答

8

這是reference to some of those special variables allowed in ruby。基本上,這個返回最後的模式匹配。

從鏈接頁面:

$&包含從以前成功的模式匹配匹配的字符串。

>> "the quick brown fox".match(/quick.*fox/) 
=> #<MatchData:0x129cc40> 
>> $& 
=> "quick brown fox" 
+0

此鏈接不好 – ebrohman

+0

@ebrohman謝謝,鏈接到wayback歸檔版本。 – drharris

+0

@drharris:也可以直接在答案中包含頁面的相關部分? –

3

在我的測試,它似乎是最後一場比賽是gsub了。因此,舉例來說,如果我有這樣的:

"Hello, world!".gsub(/o./, "a") 

$&將被設置爲or,因爲這是gsub遇到的最後一場比賽。

1

$&是最後一次成功的正則表達式匹配的字符串。例如:

foobar = "foobar" 
regex = /b.{2}/ 

if regex.match(foobar) then 
    puts $& # -> bar 
end