正規表現(regular expression: regexpと略します)とは、文字列にマッチさせるための文字列候補のクラスを示すパターンです。Emacsはregexpにマッチする検索をインクリメンタル、非インクリメンタルの両方で提供します。正規表現の構文は、次のセクションで説明します。
インクリメンタルなregexp検索を開始します(isearch-forward-regexp
)。
逆方向のインクリメンタルなregexp検索を開始します(isearch-backward-regexp
)。
regexpにたいするインクリメンタル検索は、C-M-s
(isearch-forward-regexp
をタイプするか、プレフィクス引数(引数の値は何でもよい)を指定して、C-sを呼び出します。前方へのインクリメンタル検索中は、M-rをタイプします。このコマンドはC-sと同様に、検索文字列をインクリメンタルに読みとりますが、検索文字列に正確に一致するバッファーのテキストを検索するのではなく、検索文字列をregexpとして扱います。検索文字列にテキストを追加する度に、regexpは長くなり、新しいregexpを検索します。後方へのregexp検索には、C-M-r(isearch-backward-regexp
)またはプレフィクス引数を指定したC-rを使います。後方へのインクリメンタル検索中はM-rを使います。
通常のインクリメンタル検索の特別なキーシーケンス(インクリメンタル検索の特別な入力を参照)は、インクリメンタルなregexp検索でも同じようなことを行います。たとえば検索開始直後にC-sをタイプすると、最後に行ったインクリメンタル検索で使ったregexpで、前方検索を行います。インクリメンタルなregexpと非regexp検索は、独立したデフォルトを持ちます。これらは別のサーチリングも持っており、これにはM-pとM-nでアクセスできます。サーチリングに保存される検索regexpの最大数は、regexp-search-ring-max
の値により決定され、デフォルトは16です。
通常のインクリメンタル検索とは異なり、インクリメンタルregexp検索は、デフォルトではlax space
matchingを使いません。この機能を切り替えるには、M-s SPC
(isearch-toggle-lax-whitespace
)を使います。そうするとインクリメンタルregexp検索でのSPCは、1つ以上の空白文字の並びにマッチするようになります。変数search-whitespace-regexp
は、lax
space matchingにたいするregexpを指定します。インクリメンタル検索の特別な入力を参照してください。
通常のインクリメンタル検索とは異なり、インクリメンタルなregexp検索ではcharacter folding(検索中のLaxマッチングを参照してください)を使用できません(インクリメンタルregexp検索の途中で、M-s 'によりcharacter foldingを切り替えた場合、検索は非regexp検索となり、タイプした検索パターンはリテラル文字列として解釈されます)。
インクリメンタルregexp検索では検索文字列の追加によりカーソルが前に戻されて、最初から検索しなおされることがありえます。たとえば検索文字列‘foo’に‘\|bar’を追加すると、カーソルは‘foo’より前にある最初の‘bar’に戻ります(この再計算の発生をユーザーに通知するために“Pending”を示すプロンプトに変更される)。正規表現の構文を参照してください。
前方および後方へのregexp検索は、対照的ではありません。なぜならEmacsでのregexpに対するマッチは常に前方へ処理され、regexpの先頭から開始されるからです。したがって前方へのregexp検索は前方にスキャンし、可能性のある開始位置から前方へとマッチを試みます。後方へのregexp検索は後方へスキャンし、可能性のある開始位置から前方へとマッチを試みます。これらの検索手法はミラーイメージではありません。
regexpにたいする非インクリメンタルな検索は、コマンドre-search-forward
およびre-search-backward
で行われます。これらのコマンドはM-xから呼び出すか、インクリメンタルregexp検索からのC-M-s
RETおよびC-M-r
RETで呼び出します。M-xを使用してこれらのコマンドを呼び出した場合は、指定したregexpを厳密に検索するので、case
foldingを除くlax-search機能(検索中のLaxマッチングを参照してください)はサポートされません
プレフィクス引数を指定したインクリメンタルregexp検索は、isearch-forward
やisearch-backward
のような、通常の文字列を検索します。インクリメンタル検索を参照してください。