Ответы:
Это g
означает global, как в replace global (all):
В irb:
>> "hello".sub('l', '*')
=> "he*lo"
>> "hello".gsub('l', '*')
=> "he**o"
replace
и replaceAll
. Но у Ruby есть корни в Perl, который использует g
модификатор. Это просто одна из тех вещей.
sub
намного быстрее, чем gsub
, здесь есть тест github.com/JuanitoFatas/fast-ruby/blob/master/code/string/…
A, sentence, separated, by, commas".gsub!(/(.*),(.*)/,"\\2 \\1") => " commas A, sentence, separated, by"
какие-либо мысли, почему, gsub!
кажется, находит / заменяет только первый экземпляр при использовании групп регулярных выражений?
Разница в том, что sub
заменяет только первое вхождение указанного шаблона, тогда gsub
как заменяет все вхождения (то есть заменяет глобально).
sub
и gsub
произвести замену первого и всех совпадений соответственно.
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"