「Search Regex」の使い方と一括置換できない時の対処法

プラグインSearch Regexの使い方と置換できない時の対処法

くるみ

Search Regexってこれどうやって使うの?
ということで今回は

  • 記事内のタグや画像を一括置換したい
  • Search Regexってよく聞くけどなんか使い方が難しそう
  • なぜか一括置換できなくて困っている

という方に向けて一括置換ができるプラグイン「Search Regex」の使い方と、置換できない時の対処法を徹底解説します。

参考になれば幸いです⸝⸝- ̫ -⸝⸝

Search Regexの使い方

まずプラグインのダウンロードから置換するまでの手順を解説していきますね。
注意
データベースをいじるため、万が一のことを考えて事前にバックアップをとっておくことをおすすめします。

一括置換するまでの手順

プラグインをインストール

まずは「プラグイン」→「新規追加」からSearch Regexを検索し、ダウンロードし有効化します。

Search Regexの画面を開く

Search Regexの画面を開く

すると「ツール」の項目に「Search Regex」があると思うのでそちらをクリックします。

置換したい文字列を入力

上の「検索」というテキストエリアに置換したい文字列を入力します。

注意
誤って置換してしまう恐れがあるため、まだこの段階では「置換」というテキストエリアには何も入力しないでください。検索して置換するものを確認してから入力することをおすすめします。

正規表現を使う場合は、右の「検索フラグ」で「正規表現」を指定します。

それ以外にも細かいオプションを指定することができます。概要は以下の通り。

プリセット気にしなくてOK。
検索フラグ検索する時のオプションを指定します。「正規表現」を適宜指定してあげればOK。
単一行置換後の文字列を入力するテキストエリアの行数を変更できます。置換後の文字列が複数行にわたる場合に使用。
入力元置換する対象の設定。
基本的に「投稿」と「固定ページ」でOK。
結果表示数下の検索結果に表示されるページ数を指定

置換される文字列を確認

置換される文字列を確認

文字列を入力したら、左下の「検索」をクリックします。

置換対象がページ下部に表示される

すると置換対象がページ下部に表示されます。

これでどの記事のどの文字列が置換されるのかを確認することができます。

「あれもっと色んな記事が対象になるはずなんだけどな」という場合は「結果表示数」を変えてあげてみてください。

変更後の文字列を入力

変更後の文字列を入力

問題無いようであれば「置換」というテキストエリアに、変更後の文字列を入力します。

置換後どのように変更されるか

変更後の様子はオレンジで強調されるので、念のためどのように変更されるかも確認しておきましょう。

置換する

置換する

しっかりと理想通りの置換ができるか確認できたのなら、実行していきましょう。左下にある「すべて置換」をクリックします。

置換の進行状況

すると進捗具合が表示されるので「100%」が表示されれば完了です。

お疲れ様!

くるみ

置換する時によく使う正規表現

正規表現で指定できるものは沢山ありますが、その中でも特に「Search Regex」で使いがちなものは以下の通りです。

文字概要
.任意の1文字にマッチする
*0回以上繰り返す文字にマッチする
+1回以上繰り返す文字にマッチする
?直前の文字が0回もしくは1回繰り返す場合にマッチする
{n}直線の文字がn回繰り返す場合にマッチする
[…]各括弧の中のどれか1文字にマッチする
\d数字
\s空白
\n改行

よく置換しがちなケースの例

「でも実際にこれでどうやって置換すればいいの?」という方に向けて、記事で一括変更しがちな要素での使用例を見ていきましょう。

ショートコード

テーマを移行した際などはショートコードの置換は必須ですよね。

もし「shortcode」というショートコードを「shortcode2」に置換したい時は、正規表現のチェックを入れずに以下のようにそのまま指定してあげればOK。

[shortcode] //検索対象
[shortcode2] //置換後

もしショートコードで囲っている場合は、正規表現を使います。

\[shortcode\](.+)\[/shortcode\] //検索対象
[shortcode2]$1[/shortcode2] //置換後

「$1」を使うことによって、()で囲んだ要素を後方参照しています。
「[]」を「\」でエスケープすることも忘れないようにしてください。

記事内の画像

「吹き出しの画像を一括で変えたい」ということもよくありますよね。

その際は以下のように画像のパスを変えてあげればOKです。

https://pote-chil.com/wp-content/uploads/2021/04/example.png //検索対象
https://pote-chil.com/wp-content/uploads/2021/04/example2.png //置換後

リンクを別タブで開くように変更したい時

aタグに「target=”_blank」と「rel=”noopener”」を追加してあげたい時は以下のように指定します。

<a>(.*)</a> //検索対象
<a target="_blank" rel="noopener">$2</a> //置換後

Search Regexで置換できない時に試して欲しいこと

正規表現の欄にチェックが入っているか

正規表現の欄にチェックが入っているか

そもそもかもしれませんが、正規表現を利用したいのに右側のオプションにチェックを入れるのを忘れる場合があります。

もしかしたらそれが原因かもしれません。

ちなみにこのチェックが入っていれば、「/」や「|」で囲む必要はないよ

くるみ

ショートコードを置換する時にエスケープしているか

[shortcode](内容)[/shortcode]

「正規表現でエスケープが必要な文字」を使う際は気をつける必要があります。

上の例での[shortcode]というショートコードを置換したい場合は「[]」がエスケープの対象になるので、以下のように「\」でエスケープしてあげる必要があります。

\[shortcode\].*?\[/shortcode\]

ちなみに「.*?」は、「.*」と違い左から調べて一番最初にマッチしたものになります。

参考 正規表現「.*」と「.*?」の違いについてEデジタルなんでもテクブログ

エスケープが必要な文字のうち、記事作成でよく使いがちなものは以下の通りです。

+*.[]()
ショートコードを置換する時とかは特に要注意!

くるみ

改行を考慮しているか

Search Regexでは「改行」を考慮した検索をする必要があります。

どういうことかというと、記事の編集画面の「テキスト」エディタで見た時に改行されていれば、それを考慮しなければいけません。

<h2>オフ会0人</h2>
  <div class="syamu_game">
    <p>とんかつマックブーグー</p>
    <p>ファンタジーに火をつけて</p>
  </div>

例えば上の場合ですと、下のように改行を表す「\s\n」を入れる必要があります。

<h2>オフ会0人</h2>\s\n<div class="syamu_game">\s\n<p>とんかつマックブーグー</p>\s\n<p>ファンタジーに火をつけて</p>\s\n</div>
これよくつまずくやつだ

くるみ

<h2>オフ会0人</h2><div class="syamu_game"><p>とんかつマックブーグー</p><p>ファンタジーに火をつけて</p></div>

逆にテキストエディタで上のように改行されていない場合は、勿論「\s\n」を入れる必要はありません。

<h2>オフ会0人</h2><div class="syamu_game"><p>とんかつマックブーグー</p><p>ファンタジーに火をつけて</p></div>

繰り返しになりますが、「検索しても出てこない…」という場合は記事の編集画面の「テキスト」エディタで改行されているか確認し、その改行を考慮した検索をしてみると解決するかもしれません。

余談ではありますが、ブログ主が実際に直面した「タグとか内容は同じなんだけれど、記事によって改行しているものあればしてないものもある」という状況の場合。

<div class="balloon1-pare">\s\n<div class="balloon1">\s\n(\s\n)?(<p>)?(.*)?(</p>)?(\s\n)?(\s\n)?</div>\s\n<img src="https://pote-chil.com/wp-content/uploads/2020/10/kurumi_defo3-small3-min.gif" (loading="lazy" )?/>\s\n(\s\n)?</div>

その際は「(\s\n)?」としてあげることによって、改行があっても無くてもマッチするようにしました。

まとめ

以上、「Search Regex」の使い方と、置換できない時の対処法でした。

置換できない時に試して欲しいことをまとめると以下の通りです。

  • 正規表現の欄にチェックが入っているか
  • ショートコードを置換する時にエスケープしているか
  • 改行を考慮しているか

これさえ気を付ければ大丈夫かなと思います。特に3つ目の改行に関しては忘れやすいのでご注意を。

参考になれば幸いです!では⸝⸝- ̫ -⸝⸝

1 COMMENT

yum

検索結果が出てこず、本当に困っていました。
いろんなページを検索して、初めて解決することができました。
心より感謝します。

返信する

コメントを残す