【Ruby3.x】MatchData::captures()メソッドの使い方
capturesメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
capturesメソッドは、正規表現のマッチ結果からキャプチャグループにマッチした部分文字列を配列として取り出すメソッドです。このメソッドは、MatchDataクラスのインスタンスに対して呼び出されます。MatchDataオブジェクトは、Rubyにおいて正規表現のパターンが文字列にマッチしたときに生成される、マッチした全体の部分文字列や、どの部分がキャプチャされたかといった詳細な情報を持つオブジェクトです。これは、String#matchメソッドやRegexp#matchメソッドなどが正規表現のマッチに成功した際に返され、その後capturesメソッドを呼び出すことで、マッチしたキャプチャグループの内容にアクセスできます。
capturesメソッドを呼び出すと、正規表現内で括弧()によって定義された「キャプチャグループ」にマッチした各部分文字列が、正規表現内で定義された順序に従って配列の要素として返されます。例えば、「(\d{4})年(\d{2})月(\d{2})日」のような正規表現で日付にマッチさせた場合、capturesメソッドはそれぞれ「年」「月」「日」の部分にマッチした文字列を個別の要素として格納した配列を返します。
もし正規表現のパターンやマッチング条件によって特定のキャプチャグループがマッチしなかった場合、そのグループに対応する配列の要素はnilとなります。このメソッドを利用することで、正規表現を使って文字列から構造化されたデータを効率的に抽出し、後の処理で扱いやすい形に変換することが可能です。ログファイルの解析や、特定のデータフォーマットからの情報抽出など、複雑な文字列処理を行う際に非常に役立つ機能です。
構文(syntax)
1match_data = "Ruby Programming Language".match(/(\w+) (\w+) (\w+)/) 2p match_data.captures
引数(parameters)
引数なし
引数はありません
戻り値(return)
Array
正規表現によるマッチングでキャプチャされた部分文字列を配列として返します。