未経験のITエンジニア転職【テックキャンプ】

【Search Regex使い方】WordPress一括置換プラグイン/コピペOK!

WordPress(ワードプレス)Search Regexプラグイン 使い方Limit to:

今回はWordPressのプラグインSearch Regexの「インストール方法」「使い方」「すぐ使える正規表現」を紹介していきます。

初心者の方でもすぐに使える正規表現や、エラーが起きた場合の解決方法など書いています。

Search Regexを使うと記事内容ショートコードHTMLタグなど一括置換できます。

ぶたさん

1. インストール方法

まずはSearch Regexをインストールしましょう。とても簡単なので1分もかからないと思います。

1

新規追加する

WordPress(ワードプレス)Search Regexプラグイン インストール方法使い方

2

「Search Regex」で検索する

WordPress(ワードプレス)Search Regexプラグイン インストール方法使い方

3

インストールする

WordPress(ワードプレス)Search Regexプラグイン インストール方法使い方

4

有効化する

WordPress(ワードプレス)Search Regexプラグイン インストール方法使い方

5

実行方法

WordPress(ワードプレス)Search Regexプラグイン インストール方法使い方

6

完了

WordPress(ワードプレス)Search Regexプラグイン インストール方法使い方

2. 画面の見方

WordPress(ワードプレス)Search Regexプラグイン 使い方Source

Source(検索場所)

WordPress(ワードプレス)Search Regexプラグイン 使い方Source

Sourceでは置換えしたい場所を指定できます。

注意
PostContent(投稿内容)は投稿ページと固定ページが含まれます。

Limit to:(制限の設定)

WordPress(ワードプレス)Search Regexプラグイン 使い方Source

Limit to:では置換制限ができます。

デフォルトのままでOKです。

Order By:(並び替え)

WordPress(ワードプレス)Search Regexプラグイン 使い方Source

Order By:では並べ替えを指定できます。

デフォルトのままでOKです。

3. 通常の置換方法

ここからは通常の置換を試してみましょう。

1

設定方法

WordPress(ワードプレス)Search Regexプラグイン 使い方WordPress(ワードプレス)Search Regexプラグイン 使い方 置換え方法

2

文字を入力する

WordPress(ワードプレス)Search Regexプラグイン 使い方WordPress(ワードプレス)Search Regexプラグイン 使い方 置換え方法

3

検索する

WordPress(ワードプレス)Search Regexプラグイン 使い方WordPress(ワードプレス)Search Regexプラグイン 使い方 置換え方法

4

置換プレビューを確認

WordPress(ワードプレス)Search Regexプラグイン 使い方WordPress(ワードプレス)Search Regexプラグイン 使い方 置換え方法

5

置換を実行する

WordPress(ワードプレス)Search Regexプラグイン 使い方WordPress(ワードプレス)Search Regexプラグイン 使い方 置換え方法

6

置換成功

WordPress(ワードプレス)Search Regexプラグイン 使い方WordPress(ワードプレス)Search Regexプラグイン 使い方 置換え方法

警告
一度置換えると元に戻せませんので、必ずバックアップを取りましょう。

WordPressプラグイン UpdraftPlus バックアップ インストール方法【UpdraftPlus】WordPressを丸ごとバックアップ復元できるプラグイン

ノーノちゃん

これは便利だね。複数行の置換もできたりするの?
正規表現を使えば、複数行の置換もできます。詳しくは次の項目で説明しますね。

ぶたさん

4. 正規表現とは

正規表現とは簡単にいうと、さまざまな文字を記号で表したものです。

正規表現を使うと、通常では引っかからない文字が検索できます。

言葉だけでは伝わりにくいので、実際に「通常検索」と「正規表現を使った検索」の違いを見比べてみましょう。

検索する文章

WordPress(ワードプレス)Search Regexプラグイン正規表現

通常検索

WordPress(ワードプレス)Search Regexプラグイン正規表現

正規表現で検索

WordPress(ワードプレス)Search Regexプラグイン正規表現

通常検索では0件でしたが、正規表現を使った検索では2件引っかかりました。

このように正規表現を使うと、通常ではできない検索が可能になります。

正規表現を使ってできること

正規表現を使うと、つぎのようなこともできます。

できること例
  • 複数まとめて置換
  • 複数行ある文字を置換
  • ランダムに並んだ文字を置換
  • 特定の文字を残して置換
  • 詰まった文章を改行
  • シュートコードやHTMLタグを一括置換

通常はひとつずつ手作業するところを、一発で置換できるため作業効率が何倍もアップします。

ノーノちゃん

いろんな事ができるんだね。でも正規表現の記号の意味がわからないよ・・・
正規表現の意味は今から説明していきます。意味がわからなくてもコピペで使えるので大丈夫ですよ。

ぶたさん

正規表現一覧表

Search Regexでは「検索時」と「置換時」に使う正規表現があります。

少し難しいかもしれませんが、軽く目を通しておきましょう。

検索時に使う正規表現

. どんな文字の代わりになるジョーカーのようなもの。
例1)「こ.ばんは」→「こばんは」
例2)「こは」→「こんにちは」「こんばんは」
* 直前の文字の0回以上繰り返し
例)「ABCDE*」→「ABCD」「ABCDE」「ABCDEE」「ABCDEEEEE
+ 直前の文字の1回以上繰り返し
例)「ABCDE+」→「ABCDE」「ABCDEE」「ABCDEEEEE
? 直前の文字の0回か1回繰り返し
例)「ABCDE?」→「ABCD」「ABCDE
.* どんな文字の代わりになる。長い文のときに使います。
例)「た.*い」→「たのしい」「たいやきが安い」「たまには焼肉が食べたい。でもダイエットのため我慢しています。」
.*? どんな文字の代わりになる。短い文のときに使います。
例)「た.*?い」→「たのしい」「たいやきが安い」「たまには焼肉が食べたい。でもダイエットのため我慢しています。」
[ ] [ ]内のどれかの文字
例)「ファイル[123]」→「ファイル1」「ファイル2」「ファイル3
( ) ( )内をグループ化して検索できます。2通り以上検索したい場合に役立ちます。
例)「もうすぐ(春|夏|秋)です」→「もうすぐです」「もうすぐです」「もうすぐです」
{ } { }直前の文字の繰り返し
例)「ABC{3}」→「ABCCC
文字|文字 左右の文字のどちらか(又はどちらも)
例1)「セール|特売」→「セール」「特売
例2)「カニ|カレー|牛肉」→「カニ」「カレー」「牛肉
^ 行頭
$ 行末
\d すべての数字
例)「\d」→「0」「1」「2」「3」~
\w すべての英数字と半角アンダーバー
例)「\w」→「a」「b」「1」「2」「_」~
\n 改行
\s 半角空白
\ \」の直前の記号を正規表現でも通常文字として扱う ※エスケープと呼ばれています
例)「Apple\(アップル\)」←( )が通常文字として扱われる

置換時に使う正規表現

$1 ( )グループ内の文字を置換えない
注意
Search Regexでは上記に載っていない他の正規表現は使えません。

正規表現を使う際の注意点

正規表現を使う際は、つぎの3点を確認しましょう。

①両側を囲う

WordPress search regex 正規表現 動かない
|(半角縦線)で両側を囲う必要があります。

②チェックを入れる

WordPress search regex 正規表現 動かない
正規表現を使う場合は必ずRegexにチェックを入れましょう。  

③記号を除外

検索する際に、下記の記号は正規表現として扱われるため、除外する必要があります。

WordPress search regex 正規表現 動かない
文章内にこれらの記号がある場合は除外しましょう。
WordPress search regex 正規表現 動かない
記号の直前に\(バックスラッシュ)を挿入すると除外できます。
除外した例
検索
iim
|100\$で購入できます。|
検索
iim
|2011年\(平成23年\)|
検索
iim
|\[box class="red_box" title="補足"\]明日も雨です。\[/box\]|
注意
必ず記号の直前に\(バックスラッシュ)を挿入してください。

5. プラグインのカスタマイズ

デフォルトの状態では「改行を含む置換」や「カスタム投稿の置換」が使えません。

使えるようにするためにプラグインをカスタマイズしていきましょう。

ノーノちゃん

プラグインのカスタマイズなんて難しそう・・・
大丈夫です。カスタマイズといっても、コードを貼り付けるだけなので3分もかからないですよ。

ぶたさん

【重要】置換時に改行したい

置換時に\n(改行)を使えるようにプラグインのカスタマイズしていきましょう。

1

プラグインエディターを開く

WordPress(ワードプレス)Search Regexプラグイン 改行

2

Search Regexの編集画面を開く

WordPress(ワードプレス)Search Regexプラグイン 改行

3

post_content.phpを開く

WordPress(ワードプレス)Search Regexプラグイン 改行

4

コードを編集する

WordPress(ワードプレス)Search Regexプラグイン 改行

貼り替えるコード
// 改行を有効にするコード
function replace_content ($id, $content)
{
global $wpdb;
$content = str_replace('"', '\"', $content);
$wpdb->query ( "UPDATE {$wpdb->posts} SET post_content=\"{$content}\" WHERE ID=\"{$id}\";" );
}
5

ファイルを更新する

WordPress(ワードプレス)Search Regexプラグイン 改行

6

完了

WordPress(ワードプレス)Search Regexプラグイン 改行

下記のサイトを参考にしました
参考 WordPressプラグイン「Search Regex」を利用して置換対象に改行を追加するつばさのーと


カスタム投稿を置換したい

※カスタム投稿を使っていない方はカスタマイズする必要はありません。

1

プラグインエディターを開く

WordPress(ワードプレス)Search Regexプラグイン 改行

2

Search Regexの編集画面を開く

WordPress(ワードプレス)Search Regexプラグイン 改行

3

post_content.phpを開く

WordPress(ワードプレス)Search Regexプラグイン 改行

4

コードを編集する

WordPress(ワードプレス)Search Regexプラグイン カスタム投稿

貼り替えるコード
// 編集前
$sql = "SELECT ID, post_content, post_title FROM {$wpdb->posts} WHERE post_status != 'inherit' AND post_type IN ('post','page') ORDER BY ID ".$orderby;

// 編集後(そのままコピペしてOKです)
$sql = "SELECT ID, post_content, post_title FROM {$wpdb->posts} WHERE post_status != 'inherit' ORDER BY ID ".$orderby;
5

ファイルを更新する

WordPress(ワードプレス)Search Regexプラグイン カスタム投稿

6

完了

WordPress(ワードプレス)Search Regexプラグイン カスタム投稿

下記のサイトを参考にしました
参考 プラグイン【Search Regex】をカスタム投稿でも使えるようにするDesignSupply.

6. コピペで使える正規表現(削除編)

目次
  HTMLタグ
target blank グーグルアドセンス
はてなキーワード YouTube
Twitter Facebook
Instagram

 

WordPressのビジュアルエディタでは連続改行すると が自動挿入されます。

ビジュアルでは表示されませんが、テキストで確認すると がいくつも並び非常に見づらいです。つぎの方法を使えば一括削除できます。

検索  
置換
元の文章
12月はクリスマスです。
 
1月はお正月です。
 
置換後
12月はクリスマスです。

1月はお正月です。

HTMLタグ

文章のみを残してHTMLタグをすべて一括削除する方法です。

サイトの装飾をすべて変えたい時などに使いましょう。

検索 |<.*?>|
置換
元の文章
<span class="b">
<span class="big">
置換後
検索時に使う正規表現
.*? 検索「|<.*?>|」

結果「<span class="b">
   <span class="big">」

解説「.*?=すべての文字の代わりになる」
<~>をすべて削除します。

target blank

target=”_blank”(新しいウィンドウで開く)を一括で削除する方法です。

内部リンクをすべて「そのままのウィンドウで開く」にしたい場合など使いましょう。

検索 |<a href="https://www.example.com/(.*?)/" rel="(.*?)" target="_blank">(.*?)</a>|
置換 <a href="https://www.example.com/$1/" rel="$2">$3</a>
元の文章
<a href="https://www.example.com/category001/" rel="noopener" target="_blank">サイト名</a>
置換後
<a href="https://www.example.com/category001/" rel="noopener">サイト名</a>
検索時に使う正規表現
(.*?) 検索「|<a href="https://www.example.com/(.*?)" rel="(.*?)" target="_blank">(.*?)</a>|」

結果「<a href="https://www.example.com/category001/" rel="noopener" target="_blank">サイト名</a>」

解説「.*?=すべての文字の代わりになる ( )=グループ1」
( )の位置が左から1番目にあるのでグループ1になります。

(.*?) 検索「|<a href="https://www.example.com/(.*?)" rel="(.*?)" target="_blank">(.*?)</a>|」

結果「<a href="https://www.example.com/category001/" rel="noopener" target="_blank">サイト名</a>」

解説「.*?=すべての文字の代わりになる ( )=グループ2」
( )の位置が左から2番目にあるのでグループ2になります。

(.*?) 検索「|<a href="https://www.example.com/(.*?)" rel="(.*?)" target="_blank">(.*?)</a>|」

結果「<a href="https://www.example.com/category001/" rel="noopener" target="_blank">サイト名</a>」

解説「.*?=すべての文字の代わりになる ( )=グループ3」
( )の位置が左から3番目にあるのでグループ3になります。

置換時に使う正規表現
$1~3 検索「|<a href="https://www.example.com/(.*?)" rel="(.*?)" target="_blank">(.*?)</a>|」

置換「<a href="https://www.example.com/$1/" rel="$2">$3</a>」

結果「<a href="https://www.example.com/category001/" rel="noopener">サイト名</a>」

解説「$1=グループ1を置換えない」
  「$2=グループ2を置換えない」
  「$3=グループ3を置換えない」

グーグルアドセンス

記事内に挿入したGoogle Adsense(グーグルアドセンス)のコードを一括削除する方法です。

検索 |<script async src="//pagead2.googlesyndication.com/(.*(\s)*.*)*?\s*</script>|
置換
元の文章
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!– 広告ユニット名 –>
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-000000000000000"
data-ad-slot="000000000"
data-ad-format="auto"
data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
置換後
検索時に使う正規表現
(.*(\s)*.*)*?\s* 検索「|<script async src="//pagead2.googlesyndication.com/(.*(\s)*.*)*?\s*</script>|」

結果「<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><!– example.com 投稿ページ –><insclass="adsbygoogle"style="display:block"data-ad-client="ca-pub-000000000000000"<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>」

解説「.*=すべての文字の代わりになる \s=半角空行 ( )=グループ」

はてなキーワード

はてなブログのはてなキーワード(自動リンクタグ)を一括削除する方法です。

はてなブログからWordPressに以降した際などに役立ちます。

検索 |<a class="keyword" href="http://d.hatena.ne.jp/keyword/(.*?)>(.*?)</a>|
置換 $2
元の文章
<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A4%CF%A4%C6%A4%CA%A5%C0%A5%A4%A5%A2%A5%EA%A1%BC">はてなダイアリー</a>
置換後
はてなダイアリー
検索時に使う正規表現
(.*?) 検索「|~hatena.ne.jp/keyword/(.*?)>(.*?)</a>|」

結果「<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A4%CF%A4%C6%A4%CA%A5%C0%A5%A4%A5%A2%A5%EA%A1%BC">はてなダイアリー</a>」

解説「.*?=すべての文字の代わりになる ( )=グループ1」
( )が左から1番目にあるのでグループ1になります。

(.*?) 検索「|~hatena.ne.jp/keyword/(.*?)>(.*?)</a>|」

結果「<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A4%CF%A4%C6%A4%CA%A5%C0%A5%A4%A5%A2%A5%EA%A1%BC">はてなダイアリー</a>」

解説「.*?=すべての文字の代わりになる ( )=グループ2」
( )が左から2番目にあるのでグループ2になります。

置換時に使う正規表現
$2 検索「|~hatena.ne.jp/keyword/(.*?)>(.*?)</a>|」

置換「$2

結果「はてなダイアリー

解説「$2=グループ2を置換えない」

YouTube

YouTubeの埋め込みコードを一括で削除する方法です。

検索 |<iframe width="\d{2,4}" height="\d{2,4}" src="https://www.youtube.com/.*?</iframe>|
置換
元の文章
<iframe width="560" height="315" src="https://www.youtube.com/embed/0000000" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
置換後
検索時に使う正規表現
\d{2,4} 検索「|<iframe width="\d{2,4}" height=".*?" src="https://www.youtube.com/.*?</iframe>|」

結果「<iframe width="560" height="315" src="https://www.youtube.com/embed/0000000" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>」

解説「\d=数字 {2,4}=2~4桁」

\d{2,4} 検索「|<iframe width="\d{2,4}" height="\d{2,4}" src="https://www.youtube.com/.*?</iframe>|」

結果「<iframe width="560" height="315" src="https://www.youtube.com/embed/0000000" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>」

解説「\d=数字 {2,4}=2~4桁」

.*? 検索「|<iframe width="\d{2,4}" height="\d{2,4}" src="https://www.youtube.com/.*?</iframe>|」

結果「<iframe width="560" height="315" src="https://www.youtube.com/embed/0000000" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>」

解説「.*?=すべての文字の代わりになる(短い文字の時に使います)」
※URLが変わってもすべて検索に引っかかります。

Twitter

Twitterの埋め込みコードを一括で削除する方法です。

検索 |<blockquote class="twitter-tweet"(.*(\n).*)twitter.com/widgets.js" charset="utf-8"></script>|
置換
元の文章
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">(中略)</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
置換後
検索時に使う正規表現
(.*(\n).*) 検索「|<blockquote class="twitter-tweet"(.*(\n).*)twitter.com/widgets.js" charset="utf-8"></script>|」

結果「<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">(中略)</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>」

解説「.*=すべての文字の代わりになる \n=改行 ( )=グループ」

Facebook

Facebookの埋め込みコードを一括で削除する方法です。

検索 |<iframe src="https://www.facebook.*?"encrypted-media"></iframe>|
置換
元の文章
<iframe src="https://www.facebook.com/plugins/post.php?href=https%5B%2F%2Fwww.facebook.com%2FFacebookJapan%2Fposts%22FT46F1015677422&width=500" width="500" height="890" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowTransparency="true" allow="encrypted-media"></iframe>
置換後
検索時に使う正規表現
.*? 検索「|<iframe src="https://www.facebook.*?"encrypted-media"></iframe>|」

結果「<iframe src="https://www.facebook.com/plugins/post.php?href=https%5B%2F%2Fwww.facebook.com%2FFacebookJapan%2Fposts%22FT46F1015677422&width=500" width="500" height="890" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowTransparency="true" allow="encrypted-media"></iframe>」

解説「.*?=すべての文字の代わりになる」

Instagram

Instagramの埋め込みコードを一括で削除する方法です。

検索 |<blockquote class="instagram-media".*?instagram.com/embed.js"></script>|
置換
元の文章
<blockquote class="instagram-media" data-instgrm-captioned data-instgrm-permalink="https://www.instagram.com/p/Bxa711DBNmb/" data-instgrm-version="12" style=" background:#FFF; border:0; (中略)<script async src="//www.instagram.com/embed.js"></script>
置換後
検索時に使う正規表現
.*? 検索「|<blockquote class="instagram-media".*?instagram.com/embed.js"></script>|」

結果「<blockquote class="instagram-media" data-instgrm-captioned data-instgrm-permalink="https://www.instagram.com/p/Bxa711DBNmb/" data-instgrm-version="12" style=" background:#FFF; border:0; (中略)<script async src="//www.instagram.com/embed.js"></script>」

解説「.*?=すべての文字の代わりになる」

7. コピペで使える正規表現(置換編)

目次
http→https ショートコード
画像の表示位置 見出し
行末改行 電話番号
特定文字を残す 日付表示

http→https

SSL化した際に内部リンクをhttp→httpsに一括置換する方法です。

検索 http://www.example.com/
置換 https://www.example.com/
元の文章
http://www.example.com/
置換後
https://www.example.com/
警告
外部リンクを置換えないようにしましょう。※一度置換えると戻せないので、必ずバックアップを取ってください。
WordPressプラグイン UpdraftPlus バックアップ インストール方法【UpdraftPlus】WordPressを丸ごとバックアップ復元できるプラグイン

ショートコード

下記の方法を使えばショートコードを一括で置換する方法です。

WordPressテーマを変更した際、新しいテーマのショートコードに差し替える作業が短縮できます。

STORK→SANGO

テーマを「STORK」から「SANGO」へ変更した場合です。

ここでは赤色ボックス(STORK)を注意ボックス(SANGO)に変更する方法を紹介しています。

検索
iim
|\[box class="red_box" title="(.*?)"\](.*?)\[/box\]|
置換
iim
[alert title="$1"]$2[/alert]
元の文章
iim
[box class="red_box" title="注意"]明日は雨です[/box]
置換後
iim
[alert title="注意"]明日は雨です[/alert]
検索時に使う正規表現
\
iim
検索「|\[box class="red_box" title="(.*?)"\](.*?)\[/box\]|」


解説「\=正規表現を除外」
\を直前に置くだけで[ ].+*?など正規表現をただの文字として扱ってくれます。

(.*?)
iim
検索「|\[box class="red_box" title="(.*?)"\](.*?)\[/box\]|」
iim
結果「[box class="red_box" title="注意"]明日は雨です[/box]」


解説「.*?=すべての文字の代わりになる ( )=グループ1」
( )の位置が左から1番目にあるのでグループ1になります。

(.*?)
iim
検索「|\[box class="red_box" title="(.*?)"\](.*?)\[/box\]|」
iim
結果「[box class="red_box" title="注意"]明日は雨です[/box]」


解説「.*?=すべての文字の代わりになる ( )=グループ2」
( )の位置が左から1番目にあるのでグループ2になります。

置換時に使う正規表現
$1~2
iim
検索「|\[box class="red_box" title="(.*?)"\](.*?)\[/box\]|」
iim
置換「[alert title="$1"]$2[/alert]」
iim
結果「[alert title="注意"]明日は雨です[/alert]」

 
解説「$1=グループ1を置換えない」
  「$2=グループ2を置換えない」

賢威のテンプレート→SANGO

テーマを「賢威のテンプレート」から「SANGO」へ変更した場合です。

ここでは赤色ボックス(賢威のテンプレート)を注意ボックス(SANGO)に変更する方法を紹介しています。

検索
iim
|\[box class="box_style_red" title="(.*?)"\](.*?)\[/box\]|
置換
iim
[alert title="$1"]$2[/alert]
元の文章
iim
[box class="box_style_red" title="注意"]明日は雨です[/box]
置換後
iim
[alert title="注意"]明日は雨です[/alert]
検索時に使う正規表現
\
iim
検索「|\[box class="box_style_red" title="(.*?)"\](.*?)\[/box\]」|


解説「\=正規表現を除外」
\を直前に置くだけで[ ].+*?など正規表現をただの文字として扱ってくれます。

(.*?)
iim
検索「|\[box class="box_style_red" title="(.*?)"\](.*?)\[/box\]」|
iim
結果「[box class="box_style_red" title="注意"]明日は雨です[/box]


解説「.*?=すべての文字の代わりになる ( )=グループ1」
( )の位置が左から1番目にあるのでグループ1になります。

(.*?)
iim
検索「|\[box class="box_style_red" title="(.*?)"\](.*?)\[/box\]」|
iim
結果「[box class="box_style_red" title="注意"]明日は雨です[/box]


解説「.*?=すべての文字の代わりになる ( )=グループ2」
( )の位置が左から2番目にあるのでグループ1になります。

置換時に使う正規表現
$1~2
iim
検索「|\[box class="red_box" title="(.*?)"\](.*?)\[/box\]|」
iim
置換「[alert title="$1"]$2[/alert]」
iim
結果「[alert title="注意"]明日は雨です[/alert]」

 
解説「$1=グループ1を置換えない」
  「$2=グループ2を置換えない」

賢威のテンプレート→SANGO(HTMLタグに置換)

テーマを「賢威のテンプレート」から「SANGO」へ変更した場合です。

ここでは赤色フォント(賢威のテンプレート)を赤色フォント(SANGO)に変更する方法を紹介しています。

検索
iim
|\[text color=red\](.*?)\[/text\]|
置換 <span class="red">$1</span>
元の文章
iim
[text color=red]文字が赤色になります[/text]
置換後
iim
<span class="red">文字が赤色になります</span>
検索時に使う正規表現
\
iim
検索「|\[text color=red\](.*?)\[/text\]|
iim
結果「[text color=red]文字が赤色になります[/text]」


解説「\=正規表現を除外」
\を直前に置くだけで[ ].+*?など正規表現をただの文字として扱ってくれます。

(.*?)
iim
検索「|\[text color=red\](.*?)\[/text\]|
iim
結果「[text color=red]文字が赤色になります[/text]」


解説「.*?=すべての文字の代わりになる ( )=グループ」

置換時に使う正規表現
$1
iim
検索「|\[text color=red\](.*?)\[/text\]|


置換「<span class="red">$1</span>」

iim
結果「<span class="red">文字が赤色になります</span>」

 
解説「$1=グループを置換えない」

画像の表示位置

画像の表示位置を左寄せ、右寄せ、中央寄せなどに一括で変更する方法です。

左寄せ

表示位置デフォルトを一括で左寄せにする方法です。

検索 |<img src="https://example.com/wp-content/uploads/(.*?)" alt="(.*?)" />|
置換 <img class="alignleft" src="https://example.com/wp-content/uploads/$1" alt="$2" />
元の文章
<img src="https://example.com/wp-content/uploads/5-300×180.png" alt="画像" />
置換後
<img class="alignleft" src="https://example.com/wp-content/uploads/5-300×180.png" alt="画像" />
検索時に使う正規表現
(.*?) 検索「|~/wp-content/uploads/(.*?)" alt="(.*?)" />|」

結果「~/wp-content/uploads/5-300×180.png" alt="画像" />」

解説「.*?=すべての文字の代わりになる ( )=グループ1」
( )の位置が左から1番目にあるのでグループ1になります。

(.*?) 検索「|~/wp-content/uploads/(.*?)" alt="(.*?)" />|」

結果「~/wp-content/uploads/5-300×180.png" alt="画像" />」

解説「.*?=すべての文字の代わりになる ( )=グループ2」
( )の位置が左から2番目にあるのでグループ2になります。

置換時に使う正規表現
$1~$2 検索「|~/wp-content/uploads/(.*?)" alt="(.*?)" />|」

置換「~/wp-content/uploads/$1" alt="$2" />」

結果「~/wp-content/uploads/5-300×180.png" alt="画像" />」

解説「$1=グループ1を置換えない」
  「$2=グループ2を置換えない」

右寄せ

表示位置デフォルトを一括で右寄せにする方法です。

検索 |<img src="https://example.com/wp-content/uploads/(.*?)" alt="(.*?)" />|
置換 <img class="alignright" src="https://example.com/wp-content/uploads/$1" alt="$2" />
元の文章
<img src="https://example.com/wp-content/uploads/5-300×180.png" alt="画像" />
置換後
<img class="alignright" src="https://example.com/wp-content/uploads/5-300×180.png" alt="画像" />
検索時に使う正規表現
(.*?) 検索「|~/wp-content/uploads/(.*?)" alt="(.*?)" />|」

結果「~/wp-content/uploads/5-300×180.png" alt="画像" />」

解説「.*?=すべての文字の代わりになる ( )=グループ1」
( )の位置が左から1番目にあるのでグループ1になります。

(.*?) 検索「|~/wp-content/uploads/(.*?)" alt="(.*?)" />|」

結果「~/wp-content/uploads/5-300×180.png" alt="画像" />」

解説「.*?=すべての文字の代わりになる ( )=グループ2」
( )の位置が左から2番目にあるのでグループ2になります。

置換時に使う正規表現
$1~$2 検索「|~/wp-content/uploads/(.*?)" alt="(.*?)" />|」

置換「~/wp-content/uploads/$1" alt="$2" />」

結果「~/wp-content/uploads/5-300×180.png" alt="画像" />」

解説「$1=グループ1を置換えない」
  「$2=グループ2を置換えない」

中央寄せ

表示位置デフォルトを一括で中央寄せにする方法です。

検索 |<img src="https://example.com/wp-content/uploads/(.*?)" alt="(.*?)" />|
置換 <img class="aligncenter" src="https://example.com/wp-content/uploads/$1" alt="$2" />
元の文章
<img src="https://example.com/wp-content/uploads/5-300×180.png" alt="画像" />
置換後
<img class="aligncenter" src="https://example.com/wp-content/uploads/5-300×180.png" alt="画像" />
検索時に使う正規表現
(.*?) 検索「|~/wp-content/uploads/(.*?)" alt="(.*?)" />|」

結果「~/wp-content/uploads/5-300×180.png" alt="画像" />」

解説「.*?=すべての文字の代わりになる ( )=グループ1」
( )の位置が左から1番目にあるのでグループ1になります。

(.*?) 検索「|~/wp-content/uploads/(.*?)" alt="(.*?)" />|」

結果「~/wp-content/uploads/5-300×180.png" alt="画像" />」

解説「.*?=すべての文字の代わりになる ( )=グループ2」
( )の位置が左から2番目にあるのでグループ2になります。

置換時に使う正規表現
$1~$2 検索「|~/wp-content/uploads/(.*?)" alt="(.*?)" />|」

置換「~/wp-content/uploads/$1" alt="$2" />」

結果「~/wp-content/uploads/5-300×180.png" alt="画像" />」

解説「$1=グループ1を置換えない」
  「$2=グループ2を置換えない」

デフォルト

中央寄せを一括でデフォルトに戻す方法です。

検索 |<img class="(.*?)" src="https://example.com/wp-content/uploads/(.*?)" alt="(.*?)" />|
置換 <img src="https://example.com/wp-content/uploads/$2" alt="$3" />
元の文章
<img class="aligncenter" src="https://example.com/wp-content/uploads/5-300×180.png" alt="画像" />
置換後
<img src="https://example.com/wp-content/uploads/5-300×180.png" alt="画像" />
検索時に使う正規表現
(.*?) 検索「|<img class="(.*?)" src="https://example.com/wp-content/uploads/(.*?)" alt="(.*?)" />|」

結果「<img class="aligncenter" src="https://example.com/wp-content/uploads/5-300×180.png" alt="画像" />」

解説「.*?=すべての文字の代わりになる ( )=グループ1」
( )の位置が左から1番目にあるのでグループ1になります。

(.*?) 検索「|<img class="(.*?)" src="https://example.com/wp-content/uploads/(.*?)" alt="(.*?)" />|」

結果「<img class="aligncenter" src="https://example.com/wp-content/uploads/5-300×180.png" alt="画像" />」

解説「.*?=すべての文字の代わりになる ( )=グループ2」
( )の位置が左から2番目にあるのでグループ2になります。

(.*?) 検索「|<img class="(.*?)" src="https://example.com/wp-content/uploads/(.*?)" alt="(.*?)" />|」

結果「<img class="aligncenter" src="https://example.com/wp-content/uploads/5-300×180.png" alt="画像" />」

解説「.*?=すべての文字の代わりになる ( )=グループ3」
( )の位置が左から3番目にあるのでグループ3になります。

置換時に使う正規表現
$1~$3 検索「|<img class="(.*?)" src="https://example.com/wp-content/uploads/(.*?)" alt="(.*?)" />|」

置換「<img src="https://example.com/wp-content/uploads/$2" alt="$3" />」

結果「<img src="https://example.com/wp-content/uploads/5-300×180.png" alt="画像" />」

解説「$2=グループ2を置換えない」
  「$3=グループ3を置換えない」

見出し

タイトルのみ置換

HTMLタグはそのままで、タイトル前後に文字を付け加える方法です。

検索 |<h2>(.*?)</2>|
置換 <h2>【初級編】$1</h2>
元の文章
<h2>だれでも分かるエクセル入門</h2>
<h2>エクセルのインストール方法</h2>
置換後
<h2>【初級編】だれでも分かるエクセル入門</h2>
<h2>【初級編】エクセルのインストール方法</h2>
検索時に使う正規表現
(.*?) 検索「|<h2>(.*?)</2>|」

結果「<h2>だれでも分かるエクセル入門</h2>
   <h2>エクセルのインストール方法</h2>」

解説「.*?=すべての文字の代わりになる ( )=グループ1」

置換時に使う正規表現
$1 検索「|<h2>(.*?)</2>|」

置換「<h2>【初級編】$1</h2>」

結果「<h2>【初級編】だれでも分かるエクセル入門</h2>
   <h2>【初級編】エクセルのインストール方法</h2>」

解説「$1=グループ1を置換えない」

h1~タグのみ置換

タイトルをそのままにしてHTMLタグのみ置換える方法です。

検索 |<h2>(.*?)</h2>|
置換 <h3>$1</h3>
元の文章
<h2>だれでも分かるエクセル入門</h2>
置換後
<h3>だれでも分かるエクセル入門</h3>
検索時に使う正規表現
(.*?) 検索「|<h2>(.*?)</2>|」

結果「<h2>だれでも分かるエクセル入門</h2>」

解説「.*?=すべての文字の代わりになる ( )=グループ1」

置換時に使う正規表現
$1 検索「|<h2>(.*?)</2>|」

置換「<h3>$1</h3>」

結果「<h3>だれでも分かるエクセル入門</h3>」

解説「$1=グループ1を置換えない」

行末改行

詰まって見にくい文章を一括で改行する方法です。

ここでは「。(句点)」から改行を2つ追加し、見やすくする方法を紹介しています。
※改行するだけであれば\nを1つだけにすればOKです。

検索 |(.*?)。|
置換 $1\n\n
元の文章
Search Regexでは使える正規表現が限られています。「使える表現」「使えない表現」をまとめましたので目を通しておきましょう。
置換後
Search Regexでは使える正規表現が限られています。

「使える表現」「使えない表現」をまとめましたので目を通しておきましょう。

検索時に使う正規表現
(.*?) 検索「|(.*?)。|」

結果「Search Regexでは使える正規表現が限られています「使える表現」「使えない表現」をまとめましたので目を通しておきましょう。」

解説「.*?=すべての文字の代わりになる ( )=グループ」

置換時に使う正規表現
$1 検索「|(.*?)。|」

置換「$1。\n\n」

結果「Search Regexでは使える正規表現が限られています

「使える表現」「使えない表現」をまとめましたので目を通しておきましょう。」

解説「$1=グループを置換えない」

\n \n=改行」
※今回は\n\nなので2回改行するという意味です。
注意
デフォルトの状態では置換時に\n(改行)が使えませんので、プラグインをカスタマイズする必要があります。
 
詳しくは前項目の改行を含む置換したいをご確認ください。

電話番号

電話番号の表示を一括置換する方法です。

ハイフンを付ける

検索 |(0\d{2})(\d{4})(\d{4})|
置換 $1$2$3

※上記の方法で「090」「080」「070」からはじまる番号も検索に引っかかります。

元の文章
01234567890
01001010101
置換後
01234567890
01001010101
検索時に使う正規表現
(\d{2}) 検索「|(0\d{2})-(\d{4})-(\d{4})|」

結果「01234567890
   01001010101」

解説「\d=数字 {2}=2桁 ( )=グループ1」
( )の位置が左から1番目にあるのでグループ1になります。

(\d{4}) 検索「|(0\d{2})-(\d{4})-(\d{4})|」

結果「01234567890
   01001010101」

解説「\d=数字 {4}=4桁 ( )=グループ2」
( )の位置が左から2番目にあるのでグループ2になります。

(\d{4}) 検索「|(0\d{2})(\d{4})(\d{4})|」

結果「01234567890
   01001010101

解説「\d=数字 {4}=4桁 ( )=グループ3」
( )の位置が左から3番目にあるのでグループ3になります。

置換時に使う正規表現
$1~3 検索「|(0\d{2})(\d{4})(\d{4})|」

置換「$1$2$3

結果「01234567890
   01001010101

解説「$1=グループ1を置換えない」
  「$2=グループ2を置換えない」
  「$3=グループ3を置換えない」

ハイフンを消す

検索 |(0\d{2})(\d{4})(\d{4})|
置換 $1$2$3

※上記の方法で「090」「080」「070」からはじまる番号も検索に引っかかります。

元の文章
012-3456-7890
010-0101-0101
置換後
01234567890
01001010101
検索時に使う正規表現
(\d{2}) 検索「|(0\d{2})-(\d{4})-(\d{4})|」

結果「012-3456-7890
   010-0101-0101」

解説「\d=数字 {2}=2桁 ( )=グループ1」
( )の位置が左から1番目にあるのでグループ1になります。

(\d{4}) 検索「|(0\d{2})-(\d{4})-(\d{4})|」

結果「012-3456-7890
   010-0101-0101」

解説「\d=数字 {4}=4桁 ( )=グループ2」
( )の位置が左から2番目にあるのでグループ2になります。

(\d{4}) 検索「|(0\d{2})-(\d{4})-(\d{4})|」

結果「012-3456-7890
   010-0101-0101

解説「\d=数字 {4}=4桁 ( )=グループ3」
( )の位置が左から3番目にあるのでグループ3になります。

置換時に使う正規表現
$1~3 検索「|(0\d{2})(\d{4})(\d{4})|」

置換「$1$2$3

結果「01234567890
   01001010101

解説「$1=グループ1を置換えない」
  「$2=グループ2を置換えない」
  「$3=グループ3を置換えない」

特定文字を残す

置換えたくない文字を残して、その他を置換する方法です。

パターン1

文章はそのままで、行末に「売り切れ」を加える方法です。

検索 |初回限定(.*?)|
置換 初回限定$1 売り切れ
元の文章
初回限定DVD
初回限定CD
初回限定ブルーレイ
置換後
初回限定DVD 売り切れ
初回限定CD 売り切れ
初回限定ブルーレイ 売り切れ
検索時に使う正規表現
(.*?) 検索「|初回限定(.*?)|」

結果「初回限定DVD
   初回限定CD
   初回限定ブルーレイ

解説「.*?=すべての文字の代わりになる ( )=グループ」

置換時に使う正規表現
$1 検索「|初回限定(.*?)|」

置換「初回限定$1 売り切れ」

結果「初回限定DVD 売り切れ
   初回限定CD 売り切れ
   初回限定ブルーレイ 売り切れ」

解説「$1=グループを置換えない」

パターン2

文章はそのままで、HTMLタグを太文字から大文字にする方法です。

検索 |<span class="(.*?)">(.*?)</span>|
置換 <span class="big">$2</span>
元の文章
<span class="b">今日は晴れです</span>
<span class="red b">明日は雨です</span>
置換後
<span class="big">今日は晴れです</span>
<span class="big">明日は雨です</span>
検索時に使う正規表現
(.*?) 検索「|<span class="(.*?)">(.*?)</span>|」

結果「<span class="b">今日は晴れです</span>
   <span class="red b">明日は雨です</span>」

解説「.*?=すべての文字の代わりになる ( )=グループ1」
( )の位置が左から1番目にあるのでグループ1になります

(.*?) 検索「|<span class="(.*?)">(.*?)</span>|」

結果「<span class="b">今日は晴れです</span>
   <span class="red b">明日は雨です</span>」

解説「.*?=すべての文字の代わりになる ( )=グループ2」
( )の位置が左から2番目にあるのでグループ2になります

置換時に使う正規表現
$2 検索「|<span class="(.*?)">(.*?)</span>|」

置換「<span class="big">$2</span>」

結果「<span class="big">今日は晴れです</span>
   <span class="big">明日は雨です</span>」

解説「$2=グループ2を置換えない」

パターン3

行頭の「ファイル」→英語
半角空白→_半角アンダーバー

それ以外は置換えない方法です。

検索 |ファイル(\d+)\s(.*)|
置換 File$1_$2
元の文章
ファイル001 はじめに
ファイル002 インストール
ファイル003 使い方
置換後
File001_はじめに
File002_インストール
File003_使い方
検索時に使う正規表現
(\d+) 検索「|ファイル(\d+)\s(.*)|」

結果「ファイル001 はじめに
   ファイル002 インストール
   ファイル003 使い方」

解説「\d=数字 +=直前の文字の1回以上連続 ( )=グループ1」
( )の位置が左から2番目にあるのでグループ1になります

\s(.*) 検索「|ファイル(\d+)\s(.*)|」

結果「ファイル001 はじめに
   ファイル002 インストール
   ファイル003 使い方

解説「\s=半角空行 .*?=すべての文字の代わりになる ( )=グループ2」
( )の位置が左から2番目にあるのでグループ2になります

置換時に使う正規表現
$1~2 検索「|ファイル(\d+)\s(.*)|」

置換「File$1_$2

結果「File001_はじめに
   File002_インストール
   File003_使い方

解説「$1=グループ1を置換えない」
  「$2=グループ2を置換えない」

日付表示

2000/02/10→2000年02月10日
2000年02月10日→2000/02/10

上記のように日付表示を変更する方法です。

/(スラッシュ)→年月日

検索 |(\d{4})/(\d{1,2})/(\d{1,2})|
置換 $1$2$3
元の文章
2019/05/15
2008/03/24
1990/9/29
置換後
20190515
20080324
1990929
検索時に使う正規表現
(\d{4}) 検索「(\d{4})

結果「2019/05/15」
  「2008/03/24」
  「1990/9/29」

解説「\d=数字 {4}=4桁 ( )=グループ1」
( )の位置が左から1番目にあるのでグループ1になります。

(\d{1,2}) 検索「(\d{1,2})

結果「2019/05/15」
  「2008/03/24」
  「1990/9/29」

解説「\d=数字 {1,2}=1桁か2桁 ( )=グループ2」
( )の位置が左から2番目にあるのでグループ2になります。

(\d{1,2}) 検索「(\d{1,2})

結果「2019/05/15
  「2008/03/24
  「1990/9/29

解説「\d=数字 {1,2}=1桁か2桁 ( )=グループ3」
( )の位置が左から3番目にあるのでグループ3になります。

置換時に使う正規表現
$1~$3 検索「|(\d{4})/(\d{1,2})/(\d{1,2})|」

置換「$1$2$3日」

結果「20190515日」
  「20080324日」
  「1990929日」

解説「$1=グループ1を置換えない」
  「$2=グループ2を置換えない」
  「$3=グループ3を置換えない」

年月日→/(スラッシュ)

検索 |(\d{4})(\d{1,2})(\d{1,2})日|
置換 $1/$2/$3
元の文章
2019年05月15日
2008年03月24日
1990年9月29日
置換後
2019/05/15
2008/03/24
1990/9/29
検索時に使う正規表現
(\d{4}) 検索「(\d{4})

結果「2019年05月15日」
  「2008年03月24日」
  「1990年9月29日」

解説「\d=数字 {4}=4桁 ( )=グループ1」
( )の位置が左から1番目にあるのでグループ1になります。

(\d{1,2}) 検索「(\d{1,2})

結果「2019年05月15日」
  「2008年03月24日」
  「1990年9月29日」

解説「\d=数字 {1,2}=1桁か2桁 ( )=グループ2」
( )の位置が左から2番目にあるのでグループ2になります。

(\d{1,2}) 検索「(\d{1,2})

結果「2019年05月15日」
  「2008年03月24日」
  「1990年9月29日」

解説「\d=数字 {1,2}=1桁か2桁 ( )=グループ3」
( )の位置が左から3番目にあるのでグループ3になります。

置換時に使う正規表現
$1~$3 検索「|(\d{4})(\d{1,2})(\d{1,2})日|」

置換「$1/$2/$3

結果「2019/05/15
  「2008/03/24
  「1990/9/29

解説「$1=グループ1を置換えない」
  「$2=グループ2を置換えない」
  「$3=グループ3を置換えない」

8. よくあるトラブル事例

通常検索する場合はRegexのチェックを外しているか確認しましょう。
ケース①
WordPress search regex 正規表現 動かない
Regexにチェックを入れているか確認しましょう。
ケース②
WordPress search regex 正規表現 動かない
|(半角縦線)で両側を囲っているか、もしくは余計な空白がないか確認しましょう。
ケース③
WordPress search regex 正規表現 動かない
$ \ ? () [] {}|などの特殊記号を\(バックスラッシュ)で除外しているか確認しましょう。
バックアップをとっている方は復元しましょう。※事前にバックアップをとっていない方は復元できません。

復元方法はこちらで説明しています。

There are no results.

検索結果が0件だった場合に表示されます。

Invalid regular expression: nothing to repeat at offset (数字)

このようなエラーメッセージは正規表現の書き方が間違っている場合に表示されます。もう一度正規表現一覧表を確認しましょう。

Invalid regular expression: No ending delimiter ‘|’ found

このようなエラーメッセージは|(半角縦線)で両側を囲っていない場合に表示されます。詳しくは正規表現を使う際の注意点でご参照ください。

Invalid regular expression: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1

こののようなエラーメッセージはSearch Regexで使えない正規表現を使用した場合に表示されます。正規表現一覧表に載っている表現だけを使いましょう。

Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 20480 bytes) in /home/(サーバー名)/teilab.net/public_html/wp-content/plugins/search-regex/models/search.php on line (エラーの場所)
サイトで技術的な問題が発生しています。サイト管理者のメールを確認して指示に従ってください。

上記の意味はサーバーのメモリが足らなくなった(大量に検索した)場合に表示されます。Limit to:(制限の設定)で検索数を100に変更すると置き換えができますが、上もしくは下から順番に100記事しか置換えできません。

解決方法はサーバーのメモリを増やして対応します。
※Xサーバーの場合の変更方法です。

1

ログインする

Xサーバーログイン画面

2

サーバー設定画面に移動する

Xserverメモリ増やす方法

3

ドメインを選ぶ

Xserverメモリ増やす方法

4

メモリを増やす

Xserverメモリ増やす方法
memory_limitの数値は1024Mで一度試して、それでもエラーが起きるなら2048Mに変更します。

5

変更する

Xserverメモリ増やす方法

WordPress 5.2から、サイトでプラグインやテーマが致命的なエラーを発生させた場合にそれを検知してこの自動メールでお知らせする機能が追加されました。
今回の場合、WordPress がプラグイン Search Regex でエラーを捉えました。

この問題の解決方法は「プラグインのバージョンアップを待つ」か「プラグイン削除」するしかありません。数年前から更新されていないので、セキュリティ上あまり良くありません。使うとき以外は削除しておきましょう。

追記(2020/05/08):バージョン 2.0がリリースされました。上記の問題は最新バージョンにアップデートすると解決します。