ワードプレスでブログを運営したことがある人なら一度はお世話になっているプラグイン「SearchRegex」。
ブログ記事やソースコードを一括で編集できるめちゃくちゃ便利なプラグインです。
文字やコードを一気に変更することができます。
このプラグインをより使いこなすために「正規表現」という書き方を紹介します。
正規表現って何?
![](https://himasugi.com/wp-content/uploads/2021/11/man-icon-150x150.png)
簡単に書くとこういうことです。
色んな種類の文字列を1つの文字列で表すための表現方法
![](https://himasugi.com/wp-content/uploads/2021/11/man-icon-150x150.png)
![](https://himasugi.com/wp-content/uploads/2021/11/man-icon-150x150.png)
![](https://himasugi.com/wp-content/uploads/2021/11/man-icon-150x150.png)
簡単なところから見ていきましょう。
正規表現では意味を持った文字「メタ文字」を使って表現します。
メタ文字 | 意味 |
---|---|
. | 任意の1文字 |
* | 前の文字を0回以上繰り返す |
? | 前の文字を0回or1回繰り返す |
^ | 行の先頭を表す |
$ | 行の最後を表す |
[ ] | [ ]内の文字のいずれかに一致 |
( ) | グループ化する際に使う 特に意味はない |
これだけじゃわからないと思うので、例を見てみましょう。
例)
壊したのは..です
壊したのは僕です ×
壊したのは私です ×
壊したのはワシです 〇
壊したのは.*です
壊したのは僕です 〇
壊したのはワシです〇
壊したのはマイケル・ジョーダンです〇
Window?
Windows 〇
Window 〇
Windows?98
Windows98 〇
Windows 98 〇
^ありがとう
本当にありがとう ×
ありがとうございました 〇
ありがとう$
本当にありがとう 〇
ありがとうございました ×
私は[猿猫(ウンコ)]になりたい
私は犬になりたい ×
私は猫になりたい 〇
私はウンコになりたい 〇
多分これくらい理解しておけば、SearchRegexの神と呼ばれることもあるかもしれません。
次は実際にWordPress上で使う可能性が高い正規表現を見ていきましょう。
WordPress上でめちゃくちゃよく使う正規表現
WordPress上でよく使う正規表現は下の表のものです。
よく使う表現 | 意味 |
---|---|
(.*) | 任意の文字列 ※改行なし |
([\s\S]*?) | 任意の文字列 ※改行あり |
$1 | 置換欄に使う 置換前と同じ文字列を表す ※1番目の()内の文字 |
$2 | 置換欄に使う 置換前と同じ文字列を表す ※2番目の()内の文字 |
\s | 半角スペースを表す 「\」は「\(バックスラッシュ)」でもOK |
\n | 改行を表します。 「\」は「\(バックスラッシュ)」でもOK |
\s\n | WordPress上での改行を表す ※WordPressでは改行前に自動的に半角スペースが入るのでこの表現になる |
これだけ覚えておけばよっぽどイレギュラーな状況じゃない限り対応可能です!
![](https://himasugi.com/wp-content/uploads/2021/11/man-icon-150x150.png)
![](https://himasugi.com/wp-content/uploads/2021/11/man-icon-150x150.png)
![](https://himasugi.com/wp-content/uploads/2021/11/man-icon-150x150.png)
例1)見出し変更
<h2>見出しだよ</h2>
<h2>見出しですばい</h2>
この2つを一気に<h3></h3>に変えるには正規表現を使います。
検索:<h2>(.*)</h2>
置換:<h3>$1</h3>
.(任意の1文字)が*(0回以上繰り返す)
⇒どんな文字列でもOK
※ただし改行があるとNG
↓これは<div>(.*)</div>では検索できない
<div>
あsdlkj
</div>
↓これは<div>(.*)</div>で検索できる
<div>あsdlkj</div>
例2)GoogleAdsenseタグ
<script asyncsrc="//paged2.googlesyndication.com/paged/js/adsbygoogle.js"></script>
<script>
(adsbygoogle=window.adsbygoogle||[]).push({
google_ad_client:"ca-pub-xxxxxxxxxxxxxxx",enable_apage_level_ads:true
});
</script>
改行して文字列、改行して文字列を繰り返しているだけ。
何行改行するか決まっている文字列にはこの表現でOK。
まとめ
これでSearchRegexでの置換作業がかなり楽になるはずです。
最後に、何度も言いますがこれだけは守ってください。