次: , 前: Word Search, 上: Search


10.4 正規表現探索

正規表現(regular expression、regexpと略す)とは、 一致する可能性がある一連の(無限個でもよい)文字列を表現するパターンです。 GNU Emacsでは、インクリメンタルサーチでも一括型探索でも、 正規表現を用いてつぎの一致箇所を探索できます。

正規表現によるインクリメンタルサーチを実行するには、 C-M-sisearch-forward-regexp)と打ちます。 このコマンドは、C-sと同様に、探索文字列を逐次読み取ります。 ただし、探索文字列をバッファのテキストに対して正確に照合するため のものとみなすのではなく、正規表現として扱います。 探索文字列にテキストを追加するごとに、 正規表現は長くなり、新たな正規表現を探索します。 (値は関係ない)前置引数を指定してC-sを起動しても、 前向きに正規表現の探索を始められます。 後向きに正規表現を探索するには、 C-M-risearch-backward-regexp)を使うか、 前置引数を指定してC-rを使います。

通常のインクリメンタルサーチにおいて特別な機能を持つコントロール文字は、 正規表現のインクリメンタルサーチでも同じ機能を持ちます。 探索の開始直後にC-sC-rを打つと、 最後のインクリメンタルサーチに用いた正規表現を再度使います。 つまり、正規表現を用いる探索とそうでない探索とには、 それぞれ独立のデフォルトがあるのです。 M-pM-nで参照できる探索リングも それぞれ別々です。

正規表現のインクリメンタルサーチで<SPC>を打つと、 改行を含めた任意個の白文字に一致します。 ちょうど1個の空白に一致させたいのであれば、 C-q <SPC>と打ちます。

正規表現のインクリメンタルサーチ中に正規表現に文字を加えると、 カーソルをもとに戻して探索し直すことがあります。 たとえば、`foo'を探索し終えたときに`\|bar'を追加したとします。 最初の`bar'が最初の`foo'に先行する場合には、 カーソルはまえに戻ります。

正規表現の一括型探索は、関数re-search-forwardre-search-backwardで行われます。 これらは、M-xで呼び出したり、キーに割り当てたり、あるいは、 C-M-s <RET>C-M-r <RET>として 正規表現のインクリメンタルサーチの方法で起動したりできます。

正規表現のインクリメンタルサーチコマンドに前置引数を指定すると、 isearch-forwardisearch-backwardのように、 普通の文字列探索を行います。 See Incremental Search