2
所以我认为这是奇怪:意外行为GSUB
"x'y".gsub("'", "\\'")
=> "xyy"
的变体,
'x"y'.gsub('"', "\'")
=> "x'y"
作品就好了。
要么是一个错误(不太可能),要么是Ruby处理我不明白的反向引用。任何人都可以解释第一种情况会发生什么吗?
所以我认为这是奇怪:意外行为GSUB
"x'y".gsub("'", "\\'")
=> "xyy"
的变体,
'x"y'.gsub('"', "\'")
=> "x'y"
作品就好了。
要么是一个错误(不太可能),要么是Ruby处理我不明白的反向引用。任何人都可以解释第一种情况会发生什么吗?
\'
表示$'
这是赛后的一切。
(或)
\'
中的一个gsub替换手段“匹配后部分字符串”。
再次逃离\
和它的作品,
"x'y".gsub("'", "\\\\'")
你也可以使用%q delimiters
这里,
"x'y".gsub("'", %q(\\\'))
//(IRB uses \\ to make an escape-\ visible)
提到你知道,如果这是在任何地方记录? [sub](http://ruby-doc.org/core-2.3.1/String.html#method-i-gsub)的文档甚至会说'[..],但实际上并不是模式捕获组,例如“\'”,那么它必须前面有两个反斜杠,比如“\\'”' – Confusion
我也没有在任何地方得到正确的文档,但是因为我们需要逃避转义字符和单引号所以在这里使用4个反斜杠。 – Sravan