【发布时间】:2016-12-02 21:49:58
【问题描述】:
所以我觉得这很奇怪:
"x'y".gsub("'", "\\'")
=> "xyy"
变体,
'x"y'.gsub('"', "\'")
=> "x'y"
工作得很好。
要么是一个错误(不太可能),要么是 Ruby 如何处理我不理解的反向引用。谁能解释第一种情况会发生什么?
【问题讨论】:
所以我觉得这很奇怪:
"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)
【讨论】:
[..] but is actually not a pattern capture group e.g. "\'", then it will have to be preceded by two backslashes like so "\\'"