所以我觉得这很奇怪:
"x'y".gsub("'", "\\'")
=> "xyy"
变体,
'x"y'.gsub('"', "\'")
=> "x'y"
工作正常。
这要么是一个错误(不太可能),要么是 Ruby 如何处理我不理解的反向引用。谁能解释第一种情况下会发生什么?
最佳答案
\'
表示 $'
是匹配后的所有内容。
(或)
\'
在 gsub 替换中表示 “匹配后的字符串的一部分。”
再次转义 \
就可以了,
"x'y".gsub("'", "\\\\'")
你也可以在这里使用%q分隔符
,
"x'y".gsub("'", %q(\\\'))
//(IRB uses \\ to make an escape-\ visible)
关于ruby - Ruby String#gsub 中反向引用的意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38637449/