背景
-
http://aaa/ccc
→http://aaa/bbb/ccc
にしたい - しかし、元々、
http://aaa/bbb/ccc
のものはそのままで良い
という状況で使えるコマンドが欲しかったです。
つまり、置換はするのですが、なんでも置換するのではなく除外するパターンもあるという除外です。
コマンド
正規表現の否定的先読みを使います
例えば、playの過去系のみ置換しないのなら、
"play plays played".gsub(/play(?!ed)/, "eat")
#=> "eat eats played"
というコマンドになります。
前述のurlに関しては、
"http://aaa/ccc".gsub(/http:\/\/aaa\/(?!bbb\/)/, "http://aaa/bbb/")
#=>"http://aaa/bbb/ccc"
"http://aaa/bbb/ccc".gsub(/http:\/\/aaa\/(?!bbb\/)/, "http://aaa/bbb/")
# => "http://aaa/bbb/ccc"