...

【WordPress】Search Regexで置換できない時の対処法

【WordPress】Search Regexで置換できない時の対処法

どうもおはようポテト(@ohayoupoteto22)です。

Search Regexで何故か置換ができないんだよ

ということで今回は

  • Search Regex使っても「一致結果はありません」と出る
  • 正規表現の指定の仕方が間違ってるのかな?

という方に向けて「Search Regexで置換できない時に試して欲しいこと」をまとめました。

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

ブログ主

早速いってみよう!

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)?」としてあげることによって、改行があっても無くてもマッチするようにしました。

まとめ

試して欲しいことをまとめると以下の通りです。

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

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

置換する時はバックアップも忘れずにね

くるみ

以上、Search Regexで置換できない時に試して欲しいことでした。

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

コメントを残す

CAPTCHA