У меня есть хэш с regex
для ключа и block
для значения. Что-то вроде следующего:Есть ли способ передать захват регулярных выражений блоку в Ruby?
{ 'test (.+?)' => { puts $1 } }
Не точно как это, очевидно, так как блок хранится в Proc, но это идея.
Я тогда регулярное выражение матч позже на том, что выглядит как этого
hash.each do |pattern, action|
if /#{pattern}/i.match(string)
action.call
end
end
Идея состояла в том, чтобы хранить блок на расстоянии в хэш, чтобы сделать его немного легче для меня, чтобы расширить на в будущем , но теперь захват regex
не переходит к блоку. Есть ли способ сделать это чисто, что будет поддерживать любое количество захватов, которые я положил в regex
(как в некоторых моделях regex
может быть 1 захват, у других может быть 3)?
Это не касается вашего вопроса, но зачем хранить шаблон как строку вместо регулярного выражения? – cam
Нет настоящей причины. Я использую метод для хранения хэша, поэтому его легче читать ('on (pattern, & block) hash [pattern] = block' - это в основном метод, который я использую), и казалось, что проще написать' on 'test (. +?) 'делает $ 1 end'. –