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>'
沒有用於檢查命名組是否存在的MatchData函數。有其他方法可以檢查嗎?如何檢查MatchData對象中是否存在命名組?
這被認爲是不好的做法? – 2011-04-07 18:45:08
取決於。有時候你真的不在乎是否有例外(比如你知道沒有比賽會導致一場比賽)。我謹慎使用它,但我不認爲它是不好的風格。 – EdvardM 2011-04-07 18:56:27
但是使用result.names.include?像Mladen所建議的那樣,IMO要好得多。 – EdvardM 2011-04-07 18:57:52