Ruby 2.3.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > MatchDataクラス > []

instance method MatchData#[]

self[n] -> String | nil[permalink][rdoc]

n 番目の部分文字列を返します。

0 はマッチ全体を意味します。 n の値が負の時には末尾からのインデックスと見倣します(末尾の 要素が -1 番目)。n 番目の要素が存在しない時には nil を返します。

[PARAM] n:
返す部分文字列のインデックスを指定します。
/(foo)(bar)(BAZ)?/ =~ "foobarbaz"
p $~.to_a       # => ["foobar", "foo", "bar", nil]
p $~[0]         # => "foobar"
p $~[1]         # => "foo"
p $~[2]         # => "bar"
p $~[3]         # => nil        (マッチしていない)
p $~[4]         # => nil        (範囲外)
p $~[-2]        # => "bar"
self[range] -> [String][permalink][rdoc]

Range オブジェクト range の範囲にある要素からなる部分配列を返します。

[PARAM] range:
start..end 範囲式。
/(foo)(bar)/ =~ "foobarbaz"
p $~[0..2]      # => ["foobar", "foo", "bar"]
self[start, length] -> [String][permalink][rdoc]

start 番目から length 個の要素を含む部分配列を返します。

/(foo)(bar)/ =~ "foobarbaz"
p $~[0, 3]      # => ["foobar", "foo", "bar"]

[SEE_ALSO] Array#[]

self[name] -> String | nil[permalink][rdoc]

name という名前付きグループにマッチした文字列を返します。

[PARAM] name:
名前(シンボルか文字列)
[EXCEPTION] IndexError:
指定した名前が正規表現内に含まれていない場合に発生します
/\$(?<dollars>\d+)\.(?<cents>\d+)/.match("$3.67")[:cents] # => "67"
/(?<alpha>[a-zA-Z]+)|(?<num>\d+)/.match("aZq")[:num] # => nil