Bug #8136

gsub strange behavior when substituting "\\'"

Added by Alexey Muranov about 2 years ago. Updated almost 2 years ago.

ruby -v:2.0.0 Backport:


s = "\'" # => "\'"
print s # \'
"foo".gsub("f", s) # => "oooo"

Can anybody please explain to me why it works like this? Is this a bug?


#1 Updated by Benoit Daloze about 2 years ago

Seems like \' is interpreted as $' ($POSTMATCH) which is in this case 'oo'.

#2 Updated by Nobuyoshi Nakada about 2 years ago

  • Category set to doc
  • Status changed from Open to Closed

This is one of most frequently asked questions.
Though I can't remember a pointer to good explanation, someone would know it.

#3 Updated by Alexey Muranov about 2 years ago

Excuse me, nobu, i have not understood, how can i replace something with a backslash followed by a single quote?

#4 Updated by Nobuyoshi Nakada almost 2 years ago

You need more escapes.

"foo".gsub("f", "\\'")

#5 Updated by Alexey Muranov almost 2 years ago

nobu (Nobuyoshi Nakada) wrote:

You need more escapes.

"foo".gsub("f", "\\'")

Thank you, i have not read the documentation carefully. It is still a bit strange to me that a replacement string is not taken literally by default.

Also available in: Atom PDF