Respostas:
O g
significa global, como em substituir globalmente (todos):
No irb:
>> "hello".sub('l', '*')
=> "he*lo"
>> "hello".gsub('l', '*')
=> "he**o"
replace
e replaceAll
. Mas Ruby tem suas raízes em Perl, que usa o g
modificador. É apenas uma daquelas coisas.
sub
é muito mais rápido do que gsub
, há uma referência aqui github.com/JuanitoFatas/fast-ruby/blob/master/code/string/…
A, sentence, separated, by, commas".gsub!(/(.*),(.*)/,"\\2 \\1") => " commas A, sentence, separated, by"
Alguma idéia de por que gsub!
parece estar localizando / substituindo apenas a primeira instância ao usar grupos regex?
A diferença é que sub
apenas substitui a primeira ocorrência do padrão especificado, enquanto o gsub
faz para todas as ocorrências (ou seja, ele substitui globalmente).
sub
e gsub
realizar a substituição da primeira e de todas as correspondências, 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"