Можно ли создать динамическое регулярное выражение в Ruby - PullRequest
22 голосов
/ 29 марта 2012

Я использую следующее регулярное выражение для отображения ссылок на веб-странице.

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

Я бы хотел найти способ сделать динамическую часть 032812, чтобы значение отражало текущую дату. Например, 31 марта 2012 года регулярное выражение будет выглядеть так:

\/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 ]

60 голосов
/ 29 марта 2012

Вы можете использовать #{}, как в строке.

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/ 
17 голосов
/ 29 марта 2012

Я полностью поддерживаю решение Исаака, но вы также можете:

a = "\/static\/workout\/[A-Z]{1,4}" + "033112" + "[A-Z]{1,5}-EQB.html"
regex = Regexp.new(a)
stringtomatch =~ regex
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...