【Ruby3.x】StringScanner::named_captures()メソッドの使い方
named_capturesメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
named_capturesメソッドは、StringScannerオブジェクトが正規表現によるスキャンを行った結果、名前付きキャプチャグループとして取得された部分文字列をハッシュとして返すメソッドです。このメソッドは、直前に行われたscanやmatch?などの正規表現マッチング操作で、名前付きキャプチャグループ(例: (?<name>...))が使われていた場合に、そのマッチ結果を簡単に取得できるようにします。戻り値はハッシュ形式で、キーはキャプチャグループの名前(シンボルまたは文字列)、値はそのキャプチャグループにマッチした文字列です。特定のキャプチャグループがマッチしなかった場合でも、そのキーはハッシュに含まれますが、対応する値はnilとなります。正規表現に名前付きキャプチャグループが含まれていない場合や、現在のスキャン位置で正規表現が全くマッチしなかった場合は、空のハッシュが返されます。StringScannerで複雑なテキストを解析する際、正規表現の各部分に意味のある名前を付けておくと、プログラムの可読性が向上し、抽出したデータを扱いやすくなります。ログファイルから特定のエラーコードやユーザー名を抽出したり、設定ファイルからキーと値のペアを解析したりする場面で、この機能は非常に役立ちます。
構文(syntax)
1require 'strscan' 2 3scanner = StringScanner.new("User: Alice (ID: 123)") 4scanner.scan(/User: (?<name>\w+) \(ID: (?<id>\d+)\)/) 5scanner.named_captures
引数(parameters)
引数なし
引数はありません
戻り値(return)
Hash | nil
名前付きキャプチャグループでキャプチャされた文字列をキー、キャプチャされた文字列を値とするハッシュを返します。マッチしなかった場合は nil を返します。