SearchRegexで複数行置換がうまくいかない時のポイント3つ【2021年】
SearchRegexはWordPress上の記事を横断して一括検索および置換のできる便利なツールです。
WordPressをそこそこ長く使われている方なら、使ったことのある人も多いんじゃないでしょうか。
SearchRegexでは、単純に一行だけを検索する以外に、複数行を検索して置換することができます。
ところが複数行の検索機能ですが、用意した複数行のテキストを貼り付けて検索してもヒットしません。
調べたところ、気を付ける点が意外と多くて、悩むところが多い。とても初心者向けじゃないと感じました。
単純な文字を扱うのであればそこまで難しくないですが、タグなどが入り込むとややこしくなります。
この記事では、SearchRegexで複数行置換を行う上で注意すべき点について、自分が調べた内容やハマった点をふまえて解説を書いていきます。
なおSearchRegexはブログ内のすべての記事を対象として、検索文字列を元にして簡単に書き換えられる便利なツールなのですが、
便利な反面、誤った操作によって影響するすべての記事の内容を壊してしまう恐れがあります。
つまり「WordPressをこれから触るぞ」というような初心者向けのツールではなく、ある程度WordPressやウェブ制作に慣れている方向けのツールです。
こうした前提を元に、初歩的な説明は割愛して書いています。
また実際の操作についても自己責任のうえで注意深くお願いします。
複数行検索で改行するには、正規表現で書く必要がある
結論から言うと改行部分を正規表現で書く必要があります。
具体的には \s\n と書きます。
ああああ
いいい
という複数行を検索したいなら
ああああ\s\nいいい
と書きます。
- ¥sは半角スペース、タブ、改行のどれか1文字
- ¥nは改行
を表します。
例で示した通りですが、表示上の改行は削除してください。(正規表現で改行するので)
ここでのポイントは「¥s」の存在でしょう。
「\n」は改行なので必要なのはなんとなく想像つくと思いますが、「¥s」も入れる必要があると覚えてください。
正規表現を使う場合は、SearchRegexの検索と置換の画面で、検索フラグのプルダウンをクリックして、正規表現にチェックを入れてください。
正規表現で検索する際は、影響する部分にも注意が必要
前述した「\s\n」を入れて複数行検索しても、検索がうまくいかないことがあります。
その場合、検索対象のなかに、正規表現に関係する文字が入っているかを見ます。
具体的に例をあげると「:」「?」「+」のような文字です。
もし入り込んでいたら、あたまに「\」を入れてエスケープさせましょう。(例で言えば、「\:」「\?」「\+」のように書く。)
実際にはこう検索すると使いやすい
複数行検索の際、文末で「\s\n」を書いて、表示上の改行は削除すると書きましたが、改行が多いと、改行を削除するのが面倒だと思います。
なので、実際には改行に関しては正規表現「\n」に頼らないほうが使いやすいです。
まとめると次のようになります。
- 改行は正規表現には頼らない
- 「¥s」を文末に入れる
- 改行部分に付与した「¥s」以外に正規表現となる文字列が入っていたらその文字はエスケープする
↑改行は正規表現に頼らない、とはこんなかんじ。改行部分は改行したままにします。
(2021年現在 SearchRegex2.4の場合において)
おしまいに
正規表現がらみは、ハマると数時間はあっちゅうまに飛びますね。
これ以外にもトラップはあるかもですが、正規表現が絡むと思います。
調べながら作業してみてください。
きっと自分自身の糧になると思いますので。