Project

General

Profile

Bug #8136

gsub strange behavior when substituting "\\'"

Added by alexeymuranov (Alexey Muranov) almost 6 years ago. Updated almost 6 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
2.0.0
Backport:
[ruby-core:53602]

Description

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

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

History

Updated by Eregon (Benoit Daloze) almost 6 years ago

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

Updated by nobu (Nobuyoshi Nakada) almost 6 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 alexeymuranov (Alexey Muranov) almost 6 years ago

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

Updated by nobu (Nobuyoshi Nakada) almost 6 years ago

=begin
You need more escapes.

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

Updated by alexeymuranov (Alexey Muranov) almost 6 years ago

nobu (Nobuyoshi Nakada) wrote:

=begin
You need more escapes.

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

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