我注意到spread库中有一行代码:
label_with_first_letters_capitalized = t(options[:label]).gsub(/bw/)#{$&.upcase}
有人能告诉我"$&"是什么意思吗?谢谢
这里引用了ruby中允许的一些特殊变量。基本上,这个返回上一个模式匹配的结果。
来自链接页面:
$&
包含来自先前成功模式匹配的匹配字符串。>> "the quick brown fox".match(/quick.*fox/) => #<MatchData:0x129cc40> >> $& => "quick brown fox"
在我的测试中,它似乎是gsub
得到的最后一个匹配项。例如,如果我有这个:
"Hello, world!".gsub(/o./, "a")
$&
将被设置为or
,因为这是gsub
遇到的最后一个匹配。
$&
是最后一个成功的正则表达式匹配的字符串。例如:
foobar = "foobar"
regex = /b.{2}/
if regex.match(foobar) then
puts $& # -> bar
end