2011-06-22 37 views
8

noto una línea de código en la biblioteca de compras:

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

podría alguien decirme lo que hace "$ &" significa? ¡Gracias!

Respuesta

8

Aquí hay un reference to some of those special variables allowed in ruby. Básicamente, este devuelve lo que sea que haya sido la última coincidencia de patrón.

Desde la página enlazada:

$& contiene la cadena coincidente del éxito anterior coincidencia de patrón.

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

Este enlace es malo – ebrohman

+0

@ebrohman gracias, enlace actualizado a la versión Wayback archivo. – drharris

+0

@drharris: ¿podría incluir también la parte relevante de la página en la respuesta directamente? –

3

En mis pruebas, que parece ser el último partido que tiene gsub. Así por ejemplo, si tengo esto:

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

$& se establecería en or, ya que es el último partido que gsub encontrado.

1

$& es la cadena que coincidió con la última expresión regular exitosa. Por ejemplo:

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

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