我无法使用模式匹配正确重命名目录。
尝试用文件路径中的old_name
(可以是任何字符串)替换new
字符串的最后一次出现:
./old_name/*/old_name/
==> ./old_name/*/new/
如果我使用类似下面代码的字符串文字,我将得到所需的结果:
dir_name = name.gsub(/(.*)#{old_name}/, '\1new')
问题是,当我尝试使用带插值的可变字符串替换文字'\1new'
时,可以将其更改为任何给定名称:
dir_name = name.gsub(/(.*)#{old_name}/, "\1#{any_string}")
这就是我得到的:
./old_name/*/old_name/
==> new
答案 0 :(得分:1)
它实际上以"\u0001new/"
结尾,当您puts
时,它显示为new/
。原因是因为在双引号字符串中,您需要转义反斜杠,因此它可以直达gsub
调用:
dir_name = name.gsub(/(.*)#{old_name}/, "\\1#{any_string}") # => "./old_name/*/new/"