是否可以在Ruby中创建动态正则表达式

时间:2012-03-29 02:14:06

标签: ruby regex

我正在使用以下正则表达式在网页上进行hrefs。

\/static\/workout\/[A-Z]{1,4}032812[A-Z]{1,5}-EQB.html

我想找到一种方法使正则表达式的032812部分动态化,这样该值将反映当前日期。例如,在2012年3月31日,正则表达式将如下所示:

\/static\/workout\/[A-Z]{1,4}033112[A-Z]{1,5}-EQB.html

我尝试创建一个字符串

a = \/static\/workout\/[A-Z]{1,4}033112[A-Z]{1,5}-EQB.html

然后

\ a \

但这不起作用。有没有办法做到这一点。

2 个答案:

答案 0 :(得分:60)

您可以像使用字符串一样使用#{}

1.9.2p290 :001 > some_string = "033112"
 => "033112" 
1.9.2p290 :002 > a_regex = /[A-Z]{1,4}#{some_string}[A-Z]{1-5}-EQB.html/
 => /[A-Z]{1,4}033112[A-Z]{1-5}-EQB.html/ 

答案 1 :(得分:17)

我完全支持艾萨克的解决方案,但你也可以:

a = "\/static\/workout\/[A-Z]{1,4}" + "033112" + "[A-Z]{1,5}-EQB.html"
regex = Regexp.new(a)
stringtomatch =~ regex