ruby-1.9.2-p180 :003 > result = "test string".match(/(?<mtch>test)/)
=> #<MatchData "test" mtch:"test">
ruby-1.9.2-p180 :011 > result["mtch"]
=> "test"
ruby-1.9.2-p180 :012 > result["fail"]
IndexError: undefined group name reference: fail
from (irb):12:in `[]'
from (irb):12
from /Users/jeremysmith/.rvm/rubies/ruby-1.9.2-p180/bin/irb:16:in `<main>'
No es una función MatchData para comprobar si existe un grupo llamado. ¿Hay alguna otra forma de verificar?¿Cómo puedo verificar si existe un grupo con nombre en un objeto MatchData?
¿Es esta mala práctica en cuenta? –
Depende. A veces, realmente no te importa si hubo una excepción (como cuando sabes que no tener una coincidencia causa una). Lo uso con moderación, pero no lo considero un mal estilo. – EdvardM
¿Pero usando result.names.include? es mucho mejor, OMI, como sugirió Mladen. – EdvardM