Ruby
regexp

正規表現を動的に作って複数の文字列を置換する


TL;DR



  • /#{vars}/で変数展開して正規表現を動的に作れる


  • String.gsubの第二引数にHashを渡せて複数のパターンを定義できる


例示

str = '私の名前は{name}です。好きなプログラミング言語は{language}です。'

hash = {
'{name}' => 'zom',
'{language}' => 'Ruby',
}
str.gsub!(/#{hash.keys.join('|')}/, hash)

p str # "私の名前はzomです。好きなプログラミング言語はRubyです。"


備考

正規表現の変数展開ってエスケープはどうなの?とかまだ調査・検証できていないですので、外部から送られてくるパラメータをそのまま突っ込んだりすると危ないんじゃないかとかそんな懸念があります。おいおいやっていきたいですね。