在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,然后是它的正则表达式引擎?“\”会更正确吗?