2013-05-16 2 views
21

Я пытаюсь использовать именованную группу захвата внутри блока в Ruby. $1 все еще работает, но я хотел бы ссылаться на него, используя имя, которое я дал.Использование названных групп захвата внутри блоков Ruby gsub (regex)

"foo /(bar)".gsub(/(?<my_word> \(.*?\))/x) do |match| 
    puts "$1 = #{$1} and $my_word = #{$my_word}" 
end 

Ожидаемое: $1 = (bar) and $my_word = (bar)

ответ

26

Вы ищете

"foo /(bar)".gsub(/(?<my_word> \(.*?\))/x) do |match| 
    puts "$1 = #{$1} and $my_word = #{$~[:my_word]}" 
end 
+2

Отлично, спасибо. Я никогда раньше не видел ничего подобного этому синтаксису. – Chris

+0

Можете ли вы дать мне хорошую ссылку для учебного пособия Regex? Я знаю 'zero' о' regex'. :( –

+1

http://www.regular-expressions.info/tutorial.html – oldergod

Смежные вопросы