我有一个像日志条目一样格式化的长字符串,我希望从中获取几个捕获并将它们存储在不同的变量中。
我知道 Ruby 将前 9 个捕获存储到变量 $1...$9 中,它是否还将其他捕获存储在 $10...$99 中?
如果不是,那么做这件事的简单方法是什么?
String#match
返回MatchData
包含捕获数组的对象。
m = Regexp.new('(.)' * 20).match('The quick brown fox jumps over the lazy dog')
m[12]
# => "r"
虽然 12 美元也可以:
> $12
# => "r"
是的,它确实。
"a2c4d7l4l0j4h9h7".gsub(/(\w)(\d)(\w)(\d)(\w)(\d)(\w)(\d)(\w)(\d)(\w)(\d)(\w)(\d)(\w)(\d)/) do
$12
end
#=> "4"