Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Ruby3.x】MatchData::named_captures()メソッドの使い方

named_capturesメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

named_capturesメソッドは、正規表現で文字列を検索し、そのマッチ結果を表すMatchDataオブジェクトから、名前付きキャプチャによって得られた情報をハッシュ形式で取得するメソッドです。

正規表現では、特定のパターンを括弧で囲み、その括弧に名前を付けることで、抽出したい部分に意味を持たせることができます。これを「名前付きキャプチャ」と呼びます。たとえば、(?<username>\w+) のように記述することで、マッチした文字列のこの部分をusernameという名前でキャプチャできます。

このnamed_capturesメソッドは、これらの名前付きキャプチャにマッチした部分文字列を、キャプチャ名をキーとし、対応するマッチした文字列を値とするハッシュとして返します。これにより、抽出されたデータに数値インデックスではなく、意味のある名前でアクセスできるようになるため、コードの可読性が大幅に向上し、より直感的に扱うことが可能になります。

もし正規表現の中に名前付きキャプチャが含まれていない場合、このメソッドは空のハッシュを返します。また、同じ名前のキャプチャが複数存在する場合は、正規表現のマッチングルールに従い、最後にマッチした値がその名前のキーに対応する値としてハッシュに格納されます。この機能は、複雑なログ解析やデータ抽出など、特定の情報を効率的かつ明確にプログラムで利用したい場合に非常に役立ちます。

構文(syntax)

1m = "hello world".match(/(?<greeting>\w+)\s(?<who>\w+)/)
2p m.named_captures

引数(parameters)

引数なし

引数はありません

戻り値(return)

Hash

名前付きキャプチャグループとそのキャプチャした文字列のペアを格納したハッシュを返します。

関連コンテンツ