последовательности\1,\2 и т.д. могут использоваться для интерполяции последовательных групп в матче
Это включает в себя последовательность \', что означает "все, что соответствует тому, что я сопоставил".
Либо "\\'", либо '\\\'' будут выдавать \' (помните, что \ должен быть экранирован как в двойных, так и в одинарных кавычках, а ' должен быть экранирован в однокасканных строках, поэтому использование одинарных кавычек в этом случае фактически делает вещи более подробными). Например:.
То, что вы хотите видеть gsub, на самом деле \\', которое может быть создано как "\\\\'", так и '\\\\\''. Итак:
puts s.gsub("'", "\\\\'")
children\ world
puts s.gsub("'", '\\\\\'')
children\ world
или если вам нужно много сделать с \, вы можете воспользоваться тем фактом, что при использовании /.../ (или %r{...}) вам не нужно удваивать escape-обратную косую черту:
puts s.gsub("'", /\\'/.source)
children\ world
Ответ 2
>> puts s.gsub("'", "\\\\'")
children\ world
Ответ 3
Ваша проблема в том, что строка "\" имеет смысл для gsub в заменяющей строке. Чтобы заставить его работать так, как вы хотите, вы должны использовать форму блока.