【Ruby3.x】Regexp::named_captures()メソッドの使い方
named_capturesメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
named_capturesメソッドは、レシーバであるRegexpオブジェクトに定義されている「名前付きキャプチャ」に関する詳細な情報を取得するメソッドです。
正規表現における名前付きキャプチャとは、特定のパターンを抽出する際に、抽出結果に名前を付けて識別しやすくする機能です。例えば、/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/ のように、?<year> の形式でキャプチャグループに名前を付けることができます。
このnamed_capturesメソッドを呼び出すと、定義されているすべての名前付きキャプチャの名前と、それに対応するキャプチャグループのインデックス(番号)を関連付けたハッシュを返します。返されるハッシュのキーはキャプチャの名前(文字列型)、値はその名前を持つキャプチャグループのインデックス番号を格納した配列(整数型)となります。一つの正規表現内で同じ名前のキャプチャグループが複数定義されている場合、その名前には複数のインデックスが対応するため、値が配列の形式で提供されます。
このメソッドは、正規表現の構造をプログラムから動的に分析したい場合や、マッチ結果のMatchDataオブジェクトから名前を使って特定のキャプチャグループの値を取り出す際に、そのグループが正規表現の何番目のインデックスに当たるのかを調べるのに非常に有効です。名前付きキャプチャが一つも定義されていない正規表現に対してこのメソッドを呼び出した場合、空のハッシュが返されます。
構文(syntax)
1regexp = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/ 2regexp.named_captures
引数(parameters)
引数なし
引数はありません
戻り値(return)
Hash
正規表現にマッチした名前付きキャプチャグループの名前とそのキャプチャした文字列をキーと値のペアとして持つHashを返します。