【Ruby3.x】MatchData::deconstruct_keys()メソッドの使い方
deconstruct_keysメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
deconstruct_keysメソッドは、Rubyの正規表現マッチングの結果を保持するMatchDataオブジェクトにおいて、名前付きキャプチャグループからキーと値のペアを抽出し、ハッシュとして返すメソッドです。このメソッドは、Ruby 3で導入されたパターンマッチング機能と連携するために設計されました。
正規表現を用いて文字列検索を行った際、一致した部分や、その中の特定のグループを「キャプチャグループ」として取り出すことができます。特に、(?<名前>...)のように特定のグループに名前を付ける「名前付きキャプチャ」を使用すると、そのグループを識別しやすくなります。deconstruct_keysメソッドは、この名前付きキャプチャの名前をハッシュのキーとして、キャプチャされた文字列を値として持つハッシュを生成します。
例えば、正規表現で抽出したユーザー名やドメイン名にそれぞれuserやdomainという名前を付けてキャプチャした場合、このメソッドを呼び出すことで{"user" => "取得されたユーザー名", "domain" => "取得されたドメイン名"}のような形式のハッシュが得られます。
このハッシュは、Rubyのパターンマッチングにおける「ハッシュパターン」と組み合わせて使用することで、MatchDataオブジェクトから必要な情報を簡潔かつ安全に構造分解して取り出すことを可能にします。これにより、正規表現のマッチ結果に対する処理を、より宣言的で読みやすい形で記述できるようになります。戻り値は常にハッシュであり、名前付きキャプチャが存在しない場合は空のハッシュを返します。
構文(syntax)
1/(?<first_name>\w+) (?<last_name>\w+)/.match("John Doe").deconstruct_keys
引数(parameters)
keys
- keys: destructuring で取得したいキーの名前を指定するシンボルまたは文字列
戻り値(return)
Hash
MatchDataオブジェクトが持つ、名前付きキャプチャグループ(キー)とそのキャプチャした文字列(値)のペアを格納したHashを返します。