2012-10-21 26 views
4

我有一個很長的字符串,格式化爲一個日誌條目,並且希望從它獲取多個捕獲並將它們存儲在不同的變量中。在Ruby Regex中使用超過9個未命名的捕獲

我知道Ruby將前9個捕獲存儲到變量$ 1 ... $ 9中,它是否還將其他捕獲存儲在$ 10 ... $ 99中?

如果不是什麼將是一個簡單的方法來做到這一點?

+2

難道你不能使用命名捕獲? –

+5

當你嘗試時會發生什麼? – DavidO

+1

爲什麼你將它限制爲'99'?我認爲它更可能不受限制或僅限於一位數字,而不限於兩位數字。限制爲兩位數字的基數少於限制爲一位數字。 – sawa

回答

6

是的,它的作用。

"a2c4d7l4l0j4h9h7".gsub(/(\w)(\d)(\w)(\d)(\w)(\d)(\w)(\d)(\w)(\d)(\w)(\d)(\w)(\d)(\w)(\d)/) do 
    $12 
end 
#=> "4" 
8

String#match返回MatchData保存捕獲數組的對象。

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

雖然$ 12也適用:

> $12 
# => "r" 
相關問題