在ruby脚本中的regex中插入变量值

时间:2014-08-21 08:39:00

标签: ruby regex

我有一个用于模式匹配的ruby脚本文件。我的输入字符串如下所示

    this.plugin = document.getElementById("pluginPlayer");

我的正则表达式看起来像

regxPlayerVariable = '(.*?)=.*?document\.getElementById\("#{Regexp.escape(pluginPlayeVariable)}"\)' 

此处 pluginPlayeVariable 是一个变量,但它没有输入字符串。

如果我改变我的rege并用它的值替换变量它可以正常工作但是我不能这样做,因为它是一个相应改变的运行时值。

我还尝试了下面的一些正则表达式

 regxPlayerVariable = '(.*?)=.*?document\.getElementById\("#{pluginPlayeVariable}"\)' 

那我怎么解决这个问题?

1 个答案:

答案 0 :(得分:2)

首先,regxPlayerVariable不是Regexp,而是String。插值不起作用的原因是因为您使用的是单引号。看:

foo = "bar"
puts '#{foo}'   # => #{foo}
puts "#{foo}"   # => bar
puts %q{#{foo}} # => #{foo}
puts %Q{#{foo}} # => bar
puts %{#{foo}}  # => bar
puts /#{foo}/   # => (?-mix:bar)
puts %r{#{foo}} # => (?-mix:bar)

只有最后两个实际上是正则表达式,但是在这里你可以看到哪些引用表达式进行插值,哪些不进行插值。