Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > MatchDataクラス
class MatchData
クラスの継承リスト: MatchData < Object < Kernel < BasicObject
Abstract
インスタンスメソッド
self[n] -> String | nil
-
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]
-
Range オブジェクト range の範囲にある要素からなる部分配列を返します。
- [PARAM] range:
- start..end 範囲式。
/(foo)(bar)/ =~ "foobarbaz" p $~[0..2] # => ["foobar", "foo", "bar"]
self[start, length] -> [String]
-
start 番目から length 個の要素を含む部分配列を返します。
/(foo)(bar)/ =~ "foobarbaz" p $~[0, 3] # => ["foobar", "foo", "bar"]
[SEE_ALSO] Array#[]
begin(n) -> Fixnum | nil
-
n 番目の部分文字列先頭のオフセットを返します。
0 はマッチ全体を意味します。 n 番目の部分文字列がマッチしていなければ nilを返します。
- [PARAM] n:
- 部分文字列を指定する数値。
- [EXCEPTION] IndexError:
- 範囲外の n を指定した場合に発生します。
/(foo)(bar)(BAZ)?/ =~ "foobarbaz" p $~.begin(0) # => 0 p $~.begin(1) # => 0 p $~.begin(2) # => 3 p $~.begin(3) # => nil p $~.begin(4) # => `begin': index 4 out of matches (IndexError)
[SEE_ALSO] MatchData#end
captures -> [String]
-
MatchData#to_a と異なり $& を要素に含みません。 グループにマッチした部分文字列がなければ対応する要素は nil になります。
/(foo)(bar)(BAZ)?/ =~ "foobarbaz" p $~.to_a # => ["foobar", "foo", "bar", nil] p $~.captures # => ["foo", "bar", nil]
[SEE_ALSO] MatchData#to_a
end(n) -> Fixnum | nil
-
n 番目の部分文字列終端のオフセットを返します。
0 はマッチ全体を意味します。 n 番目の部分文字列がマッチしていなければ nil を返します。
- [PARAM] n:
- 部分文字列を指定する数値。
- [EXCEPTION] IndexError:
- 範囲外の n を指定した場合に発生します。
/(foo)(bar)(BAZ)?/ =~ "foobarbaz" p $~.end(0) # => 6 p $~.end(1) # => 3 p $~.end(2) # => 6 p $~.end(3) # => nil p $~.end(4) # => `end': index 4 out of matches (IndexError)
[SEE_ALSO] MatchData#begin
length -> Fixnum
size -> Fixnum
-
部分文字列の数を返します(self.to_a.size と同じです)。
/(foo)(bar)(BAZ)?/ =~ "foobarbaz" p $~.size # => 4
names -> Array
-
Returns a list of names of captures as an array of strings. It is same as mtch.regexp.names.
/(?<foo>.)(?<bar>.)(?<baz>.)/.match("hoge").names #=> ["foo", "bar", "baz"] m = /(?<x>.)(?<y>.)?/.match("a") #=> #<MatchData "a" x:"a" y:nil> m.names #=> ["x", "y"]
offset(n) -> [Fixnum]
-
n 番目の部分文字列のオフセットの配列 [start, end] を返 します。
[ self.begin(n), self.end(n) ]
と同じです。n番目の部分文字列がマッチしていなければ [nil, nil] を返します。
- [PARAM] n:
- 部分文字列を指定する数値
- [EXCEPTION] IndexError:
- 範囲外の n を指定した場合に発生します。
[SEE_ALSO] MatchData#begin, MatchData#end
post_match -> String
-
マッチした部分より後ろの文字列を返します($'と同じ)。
/(bar)(BAZ)?/ =~ "foobarbaz" p $~.post_match # => "baz"
pre_match -> String
-
マッチした部分より前の文字列を返します($`と同じ)。
/(bar)(BAZ)?/ =~ "foobarbaz" p $~.pre_match # => "foo"
regexp -> Regexp
-
自身の元になった正規表現オブジェクトを返します。
m = /a.*b/.match("abc") m.regexp #=> /a.*b/
string -> String
-
マッチ対象になった文字列の複製を返します。
返す文字列はフリーズ(Object#freeze)されています。
to_a -> [String]
-
/(foo)(bar)(BAZ)?/ =~ "foobarbaz" p $~.to_a # => ["foobar", "foo", "bar", nil]
[SEE_ALSO] MatchData#captures
to_s -> String
-
マッチした文字列全体を返します。
/bar/ =~ "foobarbaz" p $~ # => #<MatchData:0x401b1be4> p $~.to_s # => "bar"
values_at(*index) -> [String]
-
正規表現中の n 番目の括弧にマッチした部分文字列の配列を返します。
0 番目は $& のようにマッチした文字列全体を表します。
- [PARAM] index:
- インデックスを整数で 0 個以上指定します。
m = /(foo)(bar)(baz)/.match("foobarbaz") # same as m.to_a.values_at(...) p m.values_at(0, 1, 2, 3, 4) #=> ["foobarbaz", "foo", "bar", "baz", nil] p m.values_at(-1, -2, -3, -4, -5) #=> ["baz", "bar", "foo", nil, nil]
[SEE_ALSO] Array#values_at, Array#[]