【Ruby】正規表現で特定のパターンを除外して置換する
背景
-
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"
Author And Source
この問題について(【Ruby】正規表現で特定のパターンを除外して置換する), 我々は、より多くの情報をここで見つけました https://qiita.com/akihiro_kubota/items/31e691c8c70d9c3508ff著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .