仕事では大量のページを扱うことが多く、異なる文字列に同じ置換をしたいってことが頻繁に発生していました。
ですがその術を知らず遠回りで地道に変更していたのですが、ついにその方法に辿り着くことができました!!
多分きっと、みなさまも知っていて損はないと思います(^人^)というメモ記事。
目次
とりあえず(.*)と$1を覚えておくだけでもかなり便利
例えばこんな文字列を置換したかったとします。
置換前
<img src="/images/nav_news.png">
<img src="/images/nav_about.png">
↓
置換後
<li class="item"><img src="/common/images/nav_news.png"></li>
<li class="item"><img src="/common/images/nav_about.png"></li>
「画像をclassつきの<li>で囲む」+
「画像のディレクトリを変える」のふたつです。
フツーの置換でもできるっちゃできますが、めんどっちいし対象外のソースにもうっかり反映しちゃうっていう危険も孕んでいます。
正規表現を使えば一発で一瞬で置換できます!
置換法
検索文字列
<img src="/images/nav_(.*).png">
↓
置換文字列
<li class="item"><img src="/common/images/nav_$1.png"></li>
検索をかける際の異なる文字列には (.*) を記述します。
置換後にもその文字列を反映するために $1 と記述します。
「.*」は「すべての文字列」という意味を持っています。
それを「( )」で囲ってグループ化とかいうのをさせると、「.*」の内容が記憶されて$1に反映されるとかいう仕組みらしいです。
(.*) をふたつ以上使いたい場合は、置換文字列には「$2」「$3」としていけばOKです。
正規置換ってむずかしいけど覚えるともっと捗りそう
正規表現…覚えたい!と思って何回か調べてみてるんですが難しくって挫折しちゃう〜〜。
でも今のところ上記だけでも大分捗ってます◎
参考記事 ありがとうございました!
→正規表現で置換したいけどよく分からない人が覚えとくべき1つのこと:KOTORI 様
→正規表現について:WEBる。 様
→【mod_rewrite】正規表現:mod rewrite 様