Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

書籍 Ruby Cookbook | 正規表現のUNION

パンくず

Ruby Cookbook
正規表現のUNION

概要

正規表現のUNION

正規表現のUNION

以下の構文で正規表現のUNIONが可能です

サンプル

class String
  # => freezeはオブジェクトの凍結
  def mgsub(key_value_pairs=[].freeze)
    # => Hashのキーを配列に変換
    regexp_fragments = key_value_pairs.collect { |k,v| k }
    # => Regexp.unionは引数の配列パイプ区切りの複数条件からなる正規表現として扱います。
    gsub(Regexp.union(*regexp_fragments)) do |match|
      # => detectはfindのエイリアス
      key_value_pairs.detect{|k,v| k =~ match}[1]
    end
  end
end

puts "hage,hoge".mgsub([[/ha/,"HA"],[/ho/,"HO"]])

出力

HAge,HOge