はじめに
正規表現を初めて使う方を対象に、具体的な検索と置換のサンプルを示しつつ、正規表現を解説します。
正規表現は、実行環境によって多少文法が異なりますが、本連載ではEmEditorの正規表現を使って解説していきます。EmEditorの正規表現の文法は、『EmEditor 使い方: 正規表現構文』を参照してください(Perl準拠です)。
第1回となる本稿では、基礎的なメタ文字について解説します。『使うほどに良さが分かる正規表現』(@IT)や『基礎解説 スマートな文字列処理のための正規表現入門』(@IT)を必要に応じて参照すると学習効率が高いと思います。
対象読者
- 正規表現をはじめて使う方
- 『詳説 正規表現』を、まだ読んだことがない方
必要な環境
EmEditor Professional Version 6.00.4で動作確認しました。その他、プログラム言語やSQL、テキストエディタなどでも応用できます。
EmEditorでの正規表現を使う検索の仕方
- メニューの[検索]-[検索]を選択します([Ctrl]+[F]でも可)。
- [検索する文字列]に、検索する正規表現を入力します。
- [正規表現を使用する]をチェックしておきます。
- [下を検索]を押します。黄緑色が検索にヒットした部分です。
![EmEditorでの正規表現を使う検索の仕方 EmEditorでの正規表現を使う検索の仕方](http://cz-cdn.shoeisha.jp/static/images/article/3246/howtofind.jpg)
EmEditorでの正規表現を使う置換の仕方
- メニューの[検索]-[置換]を選択します([Ctrl]+[H]でも可)。
- [検索する文字列]に、検索する正規表現を入力します。
- [置換後の文字列]に、置換後の文字列を入力します。
- [正規表現を使用する]をチェックしておきます。
- [すべて置換]を押します。
![EmEditorでの正規表現を使う置換の仕方(置換前) EmEditorでの正規表現を使う置換の仕方(置換前)](http://cz-cdn.shoeisha.jp/static/images/article/3246/howtoreplace1.jpg)
![EmEditorでの正規表現を使う置換の仕方(置換後) EmEditorでの正規表現を使う置換の仕方(置換後)](http://cz-cdn.shoeisha.jp/static/images/article/3246/howtoreplace2.jpg)
1. 正規表現とメタ文字
正規表現は、メタ文字とリテラルの2つの組み合わせで構成されます。
リテラルは、その文字自体にマッチします。リテラルのみで構成された正規表現で検索してみましょう(黄緑色が検索にヒットした部分です)。
AB
![検索対象と検索結果 検索対象と検索結果](http://cz-cdn.shoeisha.jp/static/images/article/3246/regex-howto1-01-1.jpg)
メタ文字は、それぞれ特殊な意味を持ちます。メタ文字を使った正規表現で検索してみましょう(ここでは「^」がメタ文字)。
^AB
![検索対象と検索結果 検索対象と検索結果](http://cz-cdn.shoeisha.jp/static/images/article/3246/regex-howto1-01-2.jpg)
先ほどと検索結果が変わりましたね。それでは以降、メタ文字について掘り下げていきます。
2. 行頭
行の先頭(行頭)にマッチします。メタ文字は^
です。たとえば^A
は、行頭にある文字Aにマッチします。
^A
![検索対象と検索結果 検索対象と検索結果](http://cz-cdn.shoeisha.jp/static/images/article/3246/regex-howto1-02-1.jpg)
もう1つのサンプルとして、置換で使用して行頭に指定文字列を挿入する例です。
^ を // に置換
int work; work = 5; work += 10;
//int work; //work = 5; //work += 10;
3. 行末
行の末尾(行末)にマッチします。メタ文字は$
です。下記がサンプルです。A$
は、行末にある文字Aにマッチします。
A$
![検索対象と検索結果 検索対象と検索結果](http://cz-cdn.shoeisha.jp/static/images/article/3246/regex-howto1-03-1.jpg)
もう1つサンプルです。^A$
は、正規表現を直訳して、行頭があって文字Aがあって行末があればマッチすると考えるといいでしょう。つまり、「A」のみが入力されている行にマッチします。
^A$
![検索対象と検索結果 検索対象と検索結果](http://cz-cdn.shoeisha.jp/static/images/article/3246/regex-howto1-03-2.jpg)