在ruby中用“\\”替换“\\”

在ruby中用“\\”替换“\\”,ruby,gsub,Ruby,Gsub,我正在尝试将所有出现的\替换为\。这是我的第一次尝试: > puts '\\'.gsub('\\', '\\\\') \ 当我看到输出时,我非常惊讶。经过一些实验后,我终于能够完成我想要的以下代码: > puts '\\'.gsub('\\', '\\\\\\') \\ 为什么第一段代码不起作用?为什么我需要六个反斜杠 '\\'.gsub('\\', '\\\\') 当替换发生时,替换字符串'\\\'被Regexp引擎传递,并且\\被\替换。替换字符串的结尾为'\\',一个反斜

我正在尝试将所有出现的
\
替换为
\
。这是我的第一次尝试:

> puts '\\'.gsub('\\', '\\\\')
\
当我看到输出时,我非常惊讶。经过一些实验后,我终于能够完成我想要的以下代码:

> puts '\\'.gsub('\\', '\\\\\\')
\\
为什么第一段代码不起作用?为什么我需要六个反斜杠

'\\'.gsub('\\', '\\\\')
当替换发生时,替换字符串
'\\\'
Regexp引擎传递,并且
\\
\
替换。替换字符串的结尾为
'\\'
,一个反斜杠


将任何一个bachslach替换为double的方法是使用:

str.gsub(/\\/, '\\\\\\\\\')  # 8 backslashes!
稍微短一点

'\\'.gsub(/(\\)/, '\1\1')

您也可以使用
Regexp.escape
来转义您的
\

puts '\\'.gsub('\\', Regexp.escape('\\\\'))

哦,所以我必须逃避两次——首先是Ruby,然后是它的正则表达式引擎?“\”会更正确吗?