初心者でもわかる正規表現のポイント 【これだけである程度自由にテキスト置換できる】


エディターやSearch Regex(Wordpressのプラグイン)で正規表現を少しでも使えると便利だと思います。
私は、正規表現がどうも苦手て何年たっても理解できないんですが、最低限これだけでもわかればいろんなことができますよということで自分用+アルファとしてまとめてみました。

「正規表現の方言」というのもあるみたいなので、どこまで一般的なのかは私にはわかりません。エディター(サクラエディター、秀丸)とかで使えれば個人的には問題ないので・・・。

はじめに

 * や . (ワイルドカード)について
ファイルの検索とかで[*]を使ったことがあるかと思います。この場合は以下のような意味でした。

* 任意の長さの文字(0文字以上)
? 任意の1文字(0文字も可)

これを正規表現で書き表すと

.*
.?

になります。

正規表現
. = 何でもよい一文字
* = 繰り返し回数。この場合は0回以上
? = 繰り返し回数。この場合は0回か1回

メタ文字(特殊文字)について
本来の文字でなくて、正規表現として使う文字のことを言います。
じゃぁ、本来の文字を表すにはどうすればよいか?というと、その文字の前に「\」を付けます。

\*
\.
\\

最短マッチ
AbcdZ1234Z

A.*Z = AbcdZ1234Z
A.*?Z = AbcdZ

?をつけると、最短マッチになる。

複数行マッチ
.* =改行以外の繰り返し
[\s\S]* =改行を含む繰り返し

検索 その1

.:なんでもよい1文字
^ $ :行の先頭と最後
* + ? :繰り返し回数
* = 0回以上
+ = 1回以上
? = 0回か1回

直前の文字との組み合わせです。
A* なら Aが0回以上という意味ですね
.* なら 何でもよい文字が0回以上 (ワイルドカードと同じ意味)
.? なら 何でもよい文字が0回か1回

検索 その2

[] :カッコ内の文字のどれか
[0123456789] なら、数字1文字という意味です
[0123456789]* なら数字が0回以上
{} :繰り返し回数
[0123456789] {3} なら3ケタの数字

検索 その3

( ) :グループ化
(AB)* なら、ABというものが0回以上です
| :どちらか (OR)
(AB|12) なら、ABか12のどちらか
^ :それ以外 (NOT)
[^0123456789] なら 数字以外 []内で使用すると行頭という意味ではない
- :範囲
[0-9] なら 0から9
文字コードの順番なのに注意

置換

()でくくったマッチした文字列は、前から順番に、\1,\2のような感じであらわされる
これを利用して、置換できると便利だと思います。

秀丸,サクラエディター
検索:([0-9]{4})_([0-9]{2})_archive
置換:archive/\1/\2/

/2012_04_archive.html ->/archive/2012/04/

※正規表現にチェックをしてくださいね

Search Regex
検索:|([0-9]{4})_([0-9]{2})_archive|
置換:archive/$1/$2/
$1、$2のような感じになります

その他

\n :改行コード
\t :タブ
\s :空白1文字
\S :空白以外1文字
. :改行以外の1文字


最後に

テキストの置換・変換には強力なツール?です。
分かる部分だけ、使える部分だけでも使用すると、かなり便利だと思います。

秀丸エディター -vector

サクラエディタ

秀丸,サクラエディターで、GUIで使えますから、使用したことがない人もどうぞ!! サクラエディタの方はフリーソフトです。

【ブログ内で関連ある記事】

スポンサーリンク

コメントを残す

メールアドレスは公開されません。
また、コメント欄には、必ず日本語を含めてください(スパム対策)。