正規表現(regexp)は,文字列の集合を表現するパターンです.こ の集合は無限個の要素を持つことが可能です.正規表現による探索は,Unixシス テムのエディタが従来から提供してきた大変強力な機能です.GNU Emacsでは, インクリメンタル探索でも一括型でも,正規表現による探索ができます.
正規表現によるインクリメンタル探索は,C-M-s
(isearch-forward-regexp
)と入力して実行します.このコマンドは
C-sと同じように探索する文字列を順に読み込みます.しかしこのコマン
ドでは,入力をバッファのテキストと照合するものとはせず,正規表現として扱
います.探索する文字列にテキストを加えるたびに正規表現は長くなり,新しい
正規表現で探索が行なわれます.逆方向への正規表現による探索のコマンド
isearch-backward-regexp
もありますが,キーに割り当てられてはいませ
ん.
通常のインクリメンタル探索で特別な動作をするすべての制御文字は,正規表 現によるインクリメンタル探索でも同じ機能を持ちます.探索をはじめた直後に C-sやC-rを入力すると,最後に行なった正規表現によるインクリメ ンタル探索で使った正規表現で探索します.つまり正規表現によるものとそうで ないものは,おのおの独立のデフォルトを持っています.
インクリメンタル探索中に正規表現に文字を加えても,カーソルをもどして探 索をやり直すことはしません.そうするべきかもしれませんが確信はしていませ ん.現状ではたとえば`foo'を探索していて`\|bar'を付け加えた場合, そこの`foo'より前の`bar'はチェックされません.
正規表現による一括型探索は関数re-search-forward
および
re-search-backward
で行なわれます.これらは,M-xで呼び出した
り,キーに割り当てることもできます.また,re-search-forward
は
C-M-s ESCで呼び出すこともできます.