Вы можете использовать тот же синтаксис для использования переменных в регулярном выражении, поэтому:
reg1 = /#{a}/
будет соответствовать любому значению переменной a
(в момент создания выражения!) И
reg2 = /#{a}-/
будет делать то же самое, плюс дефис, поэтому hello-
в вашем примере.
Редактировать: Как указывает Уэйн Конрад, если a
содержит «любые символы, которые будут иметь особое значение в регулярном выражении», вам необходимо их избежать. Пример:
a = ".com"
b = Regexp.new(Regexp.escape(a))
"blah.com" =~ b