Ruby String#gsub 中反向引用的意外行为

Unexpected behavior of backreferences in Ruby String#gsub

所以我觉得这很奇怪:

"x'y".gsub("'", "\'")
=> "xyy" 

变体,

'x"y'.gsub('"', "\'")
=> "x'y" 

工作正常。

要么是错误(不太可能),要么是 Ruby 如何处理我不理解的反向引用。谁能解释一下第一种情况会发生什么?

\' 表示 $' 是匹配后的所有内容。
(或)
\' 在 gsub 替换中意味着 "part of the string after the match."

再次转义 \ 并且有效,

"x'y".gsub("'", "\\'")

这里也可以用%q delimiters,

"x'y".gsub("'", %q(\\'))  

//(IRB uses \ to make an escape-\ visible)

引用自Gsub wierd behaviour