Ruby - 正規表現キャプチャグループを抽出する最良の方法?
概要
正規表現グループ マッチングの質問を読んでいたところ、正規表現からキャプチャ グループを参照するには 2 つの方法があることがわかりました。
どちらが良いでしょうか? 1) の場合、安全のため、nil を防ぐために if ステートメントを使用する必要があるため、情報を抽出するだけではどうでしょうか? 2 番目のステップの代わりに、文字列キャプチャ メソッドを呼び出します。したがって、オプション 2) の方が私にとっては便利に思えます。
解決策
v2.4.6 以降、Ruby にはnamed_captures
があり、このように使用できます。 ?
/(\w)(\w)/.match("ab").captures # => ["a", "b"]
/(\w)(\w)/.match("ab").named_captures # => {}
/(?<some_name>\w)(\w)/.match("ab").captures # => ["a"]
/(?<some_name>\w)(\w)/.match("ab").named_captures # => {"some_name"=>"a"}
さらに関連性の高いのは、名前付きキャプチャを名前で参照できることです。
result = /(?<some_name>\w)(\w)/.match("ab")
result["some_name"] # => "a"