2013-05-16 27 views
21

Tôi đang cố gắng sử dụng nhóm chụp có tên bên trong một khối trong Ruby. $1 vẫn hoạt động, nhưng tôi muốn tham khảo nó bằng tên tôi đã cung cấp.Sử dụng các nhóm chụp có tên bên trong khối gsub Ruby (regex)

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

dự kiến: $1 = (bar) and $my_word = (bar)

Trả lời

26

Bạn đang tìm kiếm

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

Tuyệt vời, cảm ơn bạn. Tôi chưa bao giờ thấy bất cứ điều gì giống như cú pháp đó trước đây. – Chris

+0

Bạn có thể cho tôi liên kết hướng dẫn Regex tốt không? Tôi biết 'zero' về' regex'. :( –

+1

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

Các vấn đề liên quan