MatchData クラス
- 正規表現のマッチに関する情報を扱うためのクラスです.このクラスのインスタンスは,Regexp クラスのメソッド last_match,Regexp クラスのメソッド match,String クラスのメソッド match,組み込み変数 $~ などによって得られます.
-
- [メソッド]
[メソッド]
- self [ n ]
- マッチデータに対する n 番目の部分文字列を返します.0 はマッチ全体を意味します. n の値が負の時には,末尾からのインデックスと見倣します(末尾の要素が -1 番目).n 番目の要素が存在しない時には nil を返します.
- p "abcdefyycxxk".match(/(c..)\w+(c..)/)[0] # => "cdefyycxx"
- p "abcdefyycxxk".match(/(c..)\w+(c..)/)[1] # => "cde"
- p "abcdefyycxxk".match(/(c..)\w+(c..)/)[2] # => "cxx"
- self [ start .. end ]
- マッチデータの start 番目から end 番目の要素からなる配列を返します.start の値が負の時には,末尾からのインデックスと見倣します(末尾の要素が -1 番目).start の値が配列の範囲に収まらない場合,nil を返します.end の値が配列の長さを越える時には,越えた分の長さは無視されます.また,範囲の始点が終点よりも大きい時には,nil を返します.
- p "abcdfyycxkkczy".match(/(c.)\w+(c.)\w+(c.)/)[1..2] # => ["cd", "cx"]
- self[ start, length ]
- マッチデータの start 番目から length 個の要素からなる配列を返します.start の値が負の時には,末尾からのインデックスと見倣します(末尾の要素が -1 番目).length が start 番目からの配列の長さより長い時には,越えた分の長さは無視されます.length が負の時には nil を返します.
- p "abcdfyycxkkczy".match(/(c.)\w+(c.)\w+(c.)/)[1,2] # => ["cd", "cx"]
- begin ( n )
- マッチデータにおける,n 番目の部分文字列の先頭位置を返します.0 はマッチ全体を意味します.
- p "abcdfyycxkkczy".match(/(c.)\w+(c.)\w+(c.)/).begin(2) # => 7
- end ( n )
- マッチデータにおける,n 番目の部分文字列の末尾位置を返します.0 はマッチ全体を意味します.
- p "abcdfyycxkkczy".match(/(c.)\w+(c.)\w+(c.)/).end(2) # => 9
- captures
- 組み込み変数 $1, $2, ・・・ の内容を格納した配列を返します.to_a と異なり,組み込み変数 $& の内容を要素に含みません.グループにマッチした部分文字列がなければ,対応する要素は nil になります.
- p "abcdfyycxkkczy".match(/(c.)\w+(c.)\w+(f.)?/).captures # => ["cd", "cz", nil]
- p "abcdfyycxkkczy".match(/(c.)\w+(c.)\w+(f.)?/).to_a # => ["cdfyycxkkczy", "cd", "cz", nil]
- length
- size
- マッチした部分文字列が入っている配列の要素数を返します
- p "abcdef".match(/c./).length # => 1
- p "abcdfyycxkkczy".match(/(c.)\w+(c.)\w+(f.)?/).length # => 4
- offset ( n )
- マッチデータにおける,n 番目の部分文字列の先頭及び末尾位置からなる配列を返します.0 はマッチ全体を意味します.
- p "abcdfyycxkkczy".match(/(c.)\w+(c.)\w+(c.)/).offset(2) # => [7, 9]
- post_match
- マッチした部分より後ろの文字列を返します.
- p "abcdfyycxkk".match(/(c.)\w+(c.)/).pre_match # => "ab"
- p "abcdfyycxkk".match(/(c.)\w+(c.)/).post_match # => "kk"
- pre_match
- マッチした部分より前の文字列を返します.
- p "abcdfyycxkk".match(/(c.)\w+(c.)/).pre_match # => "ab"
- p "abcdfyycxkk".match(/(c.)\w+(c.)/).post_match # => "kk"
- select { ・・・ }
- マッチした文字列が入っている配列の各要素の内,ブロックを評価した値が真であった要素を全て含む配列を返します.真になる要素がひとつもなかった場合は空の配列を返します.
- p "a1b23c456d".match(/(\d+)\w(\d+)\w(\d+)/).to_a # => ["1b23c456", "1", "23", "456"]
- p "a1b23c456d".match(/(\d+)\w(\d+)\w(\d+)/).select { |s| s.length < 3 } # => ["1", "23"]
- to_a
- 組み込み変数 $&,及び,組み込み変数 $1, $2, ・・・ の内容を格納した配列を返します.グループにマッチした部分文字列がなければ,対応する要素は nil になります.
- p "abcdfyycxkkczy".match(/(c.)\w+(c.)\w+(f.)?/).captures # => ["cd", "cz", nil]
- p "abcdfyycxkkczy".match(/(c.)\w+(c.)\w+(f.)?/).to_a # => ["cdfyycxkkczy", "cd", "cz", nil]
- to_s
- マッチした文字列全体を返します.
- p "abcdfyycxkkczy".match(/(c.)\w+(c.)\w+(f.)?/).to_a # => ["cdfyycxkkczy", "cd", "cz", nil]
- p "abcdfyycxkkczy".match(/(c.)\w+(c.)\w+(f.)?/).to_s # => "cdfyycxkkczy"
- values_at ( index1, index2, ・・・ )
- マッチした文字列の内,indexN 番目の括弧にマッチした文字列の配列を返します.0 はマッチ全体を意味します.
- p "abcdfyycxkkczy".match(/(c.)\w+(c.)\w+(f.)?/).to_a # => ["cdfyycxkkczy", "cd", "cz", nil]
- p "abcdfyycxkkczy".match(/(c.)\w+(c.)\w+(f.)?/).values_at(1, 2) # => ["cd", "cz"]