Когда вы используете синтаксис #{ }
, Ruby преобразует объект Regexp в строку, используя to_s
. Посмотрите, что происходит, когда вы конвертируете объект Regexp в строку:
irb> re = /blah/
=> /blah/
irb> re.to_s
=> "(?-mix:blah)"
irb> "my regex: #{re}"
=> "my regex: (?-mix:blah)"
irb> /my regex: #{re}/
=> /my regex: (?-mix:blah)/
Чтобы получить желаемую строку (в моем примере, «бла»), используйте метод Regexp#source
:
irb> re.source
"blah"
Итак, чтобы использовать ваш пример:
formula_sym = /((target's )?#{stat.source}|#{number_sym.source}|N#{number_sym.source})\%?/