【Ruby3.x】MatchData::[]()メソッドの使い方
[]メソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
[]メソッドは、正規表現のマッチ結果を格納するMatchDataオブジェクトから、一致した文字列全体や、正規表現内のキャプチャグループにマッチした部分文字列を取り出すために使用されるメソッドです。このメソッドを利用することで、正規表現で特定のパターンを見つけた際に、その詳細な内容を簡単に取得できます。
基本的な使い方として、MatchDataオブジェクトに対してインデックス(番号)を指定します。match_data[0]のように0を指定すると、正規表現全体に一致した部分の文字列を返します。これは、正規表現に一致した一番大きな範囲の文字列を意味します。1以上の整数を指定する場合、例えばmatch_data[1]は正規表現内で最初に登場する括弧()で囲まれたキャプチャグループにマッチした部分文字列を返し、match_data[2]は2番目のキャプチャグループにマッチした部分文字列を返します。
もし、指定したインデックスに対応するキャプチャグループが存在しない場合や、そのグループが何もマッチしなかった場合はnilが返されます。Rubyの正規表現では、(?<name>...)という形式でキャプチャグループに名前を付けることができ、その場合はmatch_data[:name]のようにシンボルや文字列で名前を指定して、該当する部分文字列を取得することも可能です。
このように[]メソッドは、正規表現のマッチ結果をプログラム内で活用する上で非常に重要な役割を担っており、正規表現と組み合わせて文字列処理を行う際の基本的な機能の一つです。
構文(syntax)
1"Hello Ruby!".match(/Hello (\w+)!/)[1]
引数(parameters)
key, length = nil
- key: 取得したいキャプチャグループを指定する、整数、文字列、またはシンボル
- length = nil: 取得したいキャプチャグループの長さを指定する、整数(省略可能)
戻り値(return)
String | Array<String> | nil
正規表現にマッチした部分文字列、またはキャプチャグループで抽出された文字列を返します。マッチしなかった場合はnilを返します。