我对以下结果感到困惑,
我有一个这样的字符串: -
string = "hai\"hello\!tst\`\~end"
当我在反斜杠和反向引用(\ 1)之间使用空格时,它正常工作正常。
puts string.gsub(/([\"\!\`\~])/,'\\ \1')
=> hai\ "hello\ !tst\ `\ ~end
但同样的事情是没有空间的工作!该字符串将替换为反向引用号。
puts string.gsub(/([\"\!\`\~])/,'\\\1')
=> hai\1hello\1tst\1\1end
但我希望得到答案
=> hai\"hello\!tst\`\~end
如果您需要更多信息,请与我们联系。提前谢谢。
答案 0 :(得分:3)
你需要的是更多的反斜杠:
string = "hai\"hello\!tst\`\~end"
puts string.gsub(/([\"\!\`\~])/,'\\\\\1')
# >> hai\"hello\!tst\`\~end
对gsub
的secont参数执行两步处理,以便\\\1
成为\\1
成为文字\1
。有五个反斜杠,其中前四个减少为一个,\1
转义序列完好无损,可以替换。