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

时间:2016-07-28 13:12:17

标签: ruby string gsub

所以我认为这很奇怪:

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

变体,

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

工作得很好。

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

1 个答案:

答案 0 :(得分:1)

\'表示$',这是匹配后的所有内容。
(或)
 gsub替换中的\'表示“匹配后字符串的一部分。”

再次逃离\并运行,

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

你也可以在这里使用%q delimiters

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

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

摘自Gsub wierd behaviour