Respuestas:
Las g
siglas de global, como en reemplazar globalmente (todos):
En irb:
>> "hello".sub('l', '*')
=> "he*lo"
>> "hello".gsub('l', '*')
=> "he**o"
replace
y replaceAll
. Pero Ruby tiene sus raíces en Perl, que usa el g
modificador. Es solo una de esas cosas.
sub
es mucho más rápido que gsub
, hay un punto de referencia aquí github.com/JuanitoFatas/fast-ruby/blob/master/code/string/…
A, sentence, separated, by, commas".gsub!(/(.*),(.*)/,"\\2 \\1") => " commas A, sentence, separated, by"
Alguna idea de por qué gsub!
solo parece encontrar / reemplazar solo la primera instancia cuando se usan grupos de expresiones regulares?
La diferencia es que sub
solo reemplaza la primera ocurrencia del patrón especificado, mientras gsub
que lo hace para todas las ocurrencias (es decir, reemplaza globalmente).
sub
y gsub
realizar el reemplazo de la primera y todas las coincidencias respectivamente.
sub(pattern, replacement, x, ignore.case = FALSE, perl = FALSE,
fixed = FALSE, useBytes = FALSE)
gsub(pattern, replacement, x, ignore.case = FALSE, perl = FALSE,
fixed = FALSE, useBytes = FALSE)
sub("4", "8", "An Introduction to R Software Course will be of 4 weeks duration" )
##"An Introduction to R Software Course will be of 8 weeks duration"
gsub("4", "8", "An Introduction to R Software Course will be of 4 weeks duration" )
##"An Introduction to R Software Course will be of 8 weeks duration"