我有一个用于模式匹配的ruby脚本文件。我的输入字符串如下所示
this.plugin = document.getElementById("pluginPlayer");
我的正则表达式看起来像
regxPlayerVariable = '(.*?)=.*?document\.getElementById\("#{Regexp.escape(pluginPlayeVariable)}"\)'
此处 pluginPlayeVariable 是一个变量,但它没有输入字符串。
如果我改变我的rege并用它的值替换变量它可以正常工作但是我不能这样做,因为它是一个相应改变的运行时值。
我还尝试了下面的一些正则表达式
regxPlayerVariable = '(.*?)=.*?document\.getElementById\("#{pluginPlayeVariable}"\)'
那我怎么解决这个问题?
答案 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)
只有最后两个实际上是正则表达式,但是在这里你可以看到哪些引用表达式进行插值,哪些不进行插值。