Ruby如何构建动态regexp?

时间:2016-06-18 17:20:12

标签: ruby regex string

我需要使用ruby regexp更改html。

这是在rubular中运行的正则表达式:

/(<\s*?div\s*?id="my_id"\s*?>.*?<\/div>)/im

我将重新使用此代码,因此我希望能够更改regexp的my_id部分。

def extract_div_with_id(id)
  # str = somehow turn this regex into string
  str.sub!('my_id', id)
  regex = Regexp.new(str, Regexp::IGNORECASE | Regexp::MULTILINE)
  ...
end

如何编写该函数的第一行(已注释掉的那一行)?

PS。
Nokogiri不起作用。我不知道也不在乎是不是因为文档无效且doctype是xhtml,或者因为它包含php指令或其他什么,我想使用regexp。 请不要告诉我使用nokogiri或一些非正则表达式解决方案。

1 个答案:

答案 0 :(得分:3)

您可以像使用字符串一样使用插值:

/(<\s*?div\s*?id="#{my_id}"\s*?>.*?<\/div>)/im