puts 'the\t\'arget'.gsub("'", "\\'")
产生以下输出:
the\targetarget
为什么?
gsub 中的\\'
替换实际上是一个反向引用,它用原始字符串中的字符'
之后的所有内容替换一个字符,即arget。'
这是来自ruby 文档String#gsub
的引用:
如果替换是一个字符串,它将被替换为匹配的文本。它可能包含对模式捕获组的反向引用,形式为 \\d,其中 d 是组号,或 \\k,其中 n 是组名。如果它是双引号字符串,则两个反向引用都必须以附加的反斜杠开头。但是,在替换中,特殊匹配变量(例如 &$)不会引用当前匹配。