如何在Ruby中使用双引号字符串中的\ w

时间:2012-08-13 10:21:56

标签: ruby

我正在使用Capistrano进行部署,我需要运行一个命令来在服务器上的.htaccess文件中设置正确的环境。

我使用sed这样做:run "sed -i -r 's/APPLICATION_ENV \w+/APPLICATION_ENV #{stage}/' #{current_release}/public/.htaccess"

我的问题是,\w+被Ruby / Cap转义,正则表达式最终只尝试匹配w+。如果我使用\\w+,我最终会使用试图匹配\\w+的正则表达式。

如何使用插值双引号字符串并成功转义\w?我是否真的需要更改单引号字符串和变量的连接?

1 个答案:

答案 0 :(得分:1)

在我的系统上,您的样本可以正常运行,但您可以尝试使用这两个中的一个(评论那些您不能使用的样本)

begin
  stage = "stage"
  current_release = "current_release"
  s = "sed -i -r 's/APPLICATION_ENV \\w+/APPLICATION_ENV #{stage}/' #{current_release}/public/.htaccess"
  s = "sed -i -r 's/APPLICATION_ENV #{"\\w+"}/APPLICATION_ENV #{stage}/' #{current_release}/public/.htaccess"
  s = "sed -i -r 's/APPLICATION_ENV #{92.chr}w+/APPLICATION_ENV #{stage}/' #{current_release}/public/.htaccess"
  puts s
  system s
rescue 
  puts $! 
  system('pause') 
end