4

我有一个像日志条目一样格式化的长字符串,我希望从中获取几个捕获并将它们存储在不同的变量中。

我知道 Ruby 将前 9 个捕获存储到变量 $1...$9 中,它是否还将其他捕获存储在 $10...$99 中?

如果不是,那么做这件事的简单方法是什么?

4

2 回答 2

8

String#match返回MatchData包含捕获数组的对象。

m = Regexp.new('(.)' * 20).match('The quick brown fox jumps over the lazy dog')
m[12]
# => "r" 

虽然 12 美元也可以:

> $12
# => "r" 
于 2012-10-21T16:19:10.790 回答
6

是的,它确实。

"a2c4d7l4l0j4h9h7".gsub(/(\w)(\d)(\w)(\d)(\w)(\d)(\w)(\d)(\w)(\d)(\w)(\d)(\w)(\d)(\w)(\d)/) do
  $12
end
#=> "4"
于 2012-10-21T16:19:39.180 回答