所以我认为这很奇怪:
"x'y".gsub("'", "\\'")
=> "xyy"
变体,
'x"y'.gsub('"', "\'")
=> "x'y"
工作得很好。
要么是一个bug(不太可能),要么是Ruby如何处理我不理解的反向引用。谁能解释第一种情况会发生什么?
答案 0 :(得分:1)
\'
表示$'
,这是匹配后的所有内容。
(或)
gsub替换中的\'
表示“匹配后字符串的一部分。”
再次逃离\
并运行,
"x'y".gsub("'", "\\\\'")
你也可以在这里使用%q delimiters
,
"x'y".gsub("'", %q(\\\'))
//(IRB uses \\ to make an escape-\ visible)