【Ruby3.x】Object::MatchData定数の使い方
MatchData定数の使い方について、初心者にもわかりやすく解説します。
基本的な使い方
MatchData定数は、正規表現による文字列のパターンマッチングの結果をカプセル化する、同名のクラスを表すものです。Rubyにおいて、このMatchDataクラスのインスタンスは、正規表現が文字列と正常にマッチしたときに自動的に生成される特別なオブジェクトです。
MatchDataオブジェクトは、マッチした文字列全体、正規表現内で括弧によって定義されたキャプチャグループの個々のマッチ、元の文字列内でのマッチが開始および終了した位置(オフセット)など、パターンマッチングに関する詳細な情報を網羅的に保持しています。
例えば、String#matchメソッドやRegexp#matchメソッドを実行した際に、マッチが成功すればこのMatchDataオブジェクトが戻り値として返されます。また、Rubyには$~という特殊変数(または$LAST_MATCH_INFO)があり、これは直近の正規表現マッチングの結果であるMatchDataオブジェクトを常に参照するため、直接アクセスすることも可能です。
システムエンジニアを目指す初心者の方にとって、正規表現を用いた文字列の検索、解析、部分抽出といった処理を行う上で、MatchDataオブジェクトは非常に重要な役割を果たします。このオブジェクトを通じて、マッチした部分文字列をインデックスや名前で参照したり、マッチの正確な位置情報を取得したりすることで、文字列処理のロジックをより柔軟かつ強力に構築することができます。
構文(syntax)
1# 文字列に正規表現をマッチさせると、MatchDataオブジェクトが返される 2result = "Ruby version 3.2.2".match(/version (\d\.\d\.\d)/) 3 4# result は MatchData クラスのインスタンスであり、マッチした情報を保持する 5puts result[0] # => "version 3.2.2" (マッチ全体) 6puts result[1] # => "3.2.2" (1番目のキャプチャグループ)
引数(parameters)
引数なし
引数はありません
戻り値(return)
Class
MatchData は、正規表現による文字列のマッチング結果を表すクラスです。この定数は、その MatchData クラスそのものを指します。