通过MatchData#[]
方法,我们可以借助分组别名、分组序号访问到所捕获的内容:
pattern=/(?<number>\d+) (?<word>\w+)/
pattern.match('100 thousand')[:number]
#=> "100"
pattern=/(\d+) (\w+)/
pattern.match('100 thousand')[2]
#=> "thousand"
除上面的方法外,也可以使用MatchData#values_at
根据分组的序号获取捕获内容。
pattern=/(\d+) (\w+)/
pattern.match('100 thousand').values_at(2)
#=> ["thousand"]
与前文的MatchData#[]
一样,2.4中Ruby对values_at
做了加强,不仅可以接受分组序号,还可以接受分组别名。
pattern=/(?<number>\d+) (?<word>\w+)/
pattern.match('100 thousand').values_at(:number)
#=> ["100"]
-完-