ほとんどの場合、‘\’ に続く任意の文字は、その文字にのみ一致します。ただし、いくつかの例外があります。‘\’ で始まり、特別な意味を持つ特定のシーケンスなどです。以下に、特殊な ‘\’ 構文の表を示します。
代替パターンを指定します。a と b という2つの正規表現の間に ‘\|’ を挟んだ表現は、a または b のいずれかにマッチするものすべてにマッチします。
したがって、‘foo\|bar’は‘foo’または‘bar’のいずれかにマッチしますが、それ以外の文字列にはマッチしません。
‘\|’は、取り得る最大の周辺式に適用されます。‘\|’のグループ化能力を制限できるのは、周囲の‘\( … \)’グループのみです。
‘\|’の複数回の使用に対応する完全なバックトラッキング機能が必要な場合は、POSIX正規表現関数を使用してください(EmacsとPOSIX正規表現の比較を参照)。
は、直前のパターンをちょうど m 回繰り返す後置演算子です。したがって、‘x\{5\}’ は文字列 ‘xxxxx’ にのみマッチし、それ以外にはマッチしません。‘c[ad]\{3\}r’ は、‘caaar’、‘cdddr’、‘cadar’ といった文字列にマッチします。
は、最小 m 回から最大 n 回までの繰り返しを指定する、より汎用的な後置演算子です。m が省略された場合、最小値は 0 となり、n が省略された場合、最大値は設定されません。m および n のいずれの形式においても、指定された場合は 2**16 − 1 以下となります。
例えば、‘c[ad]\{1,2\}r’は、文字列‘car’、‘cdr’、‘caar’、‘cadr’、‘cdar’、および‘cddr’にマッチし、それ以外にはマッチしません。
‘\{0,1\}’ または ‘\{,1\}’ は、‘?’ と等価です。
‘\{0,\}’ または ‘\{,\}’ は、‘*’
と等価です。
‘\{1,\}’は‘+’と等価です。
は、3つの目的を果たすグループ化構文です:
この最後の用法は、括弧書きのグループ化という概念から生じたものではなく、同一の‘\( … \)’構造に第二の意味として割り当てられた独立した特徴である。というのも、実際には通常、これら二つの意味の間に矛盾が生じることはなかったからである。しかし、稀に矛盾が生じることがあり、それがシャイグループの導入へとつながった。
はシャイグループという構成です。シャイグループは、通常のグループが持つ最初の2つの目的(他の演算子の入れ子構造の制御)を果たしますが、番号は付与されないため、‘\digit’を用いてその値を参照することはできません。シャイグループは、通常の非シャイグループの番号付けを変更することなく自動的に追加できるため、機械的に構築される正規表現において特に有用です。
シャイ群は、非捕捉群や非番号付き群とも呼ばれる。
明示的に番号を指定したグループという構文です。通常のグループは位置に基づいて暗黙的に番号が割り当てられますが、これが不便な場合があります。この構文を使用すると、特定のグループ番号を強制的に指定できます。番号付けに関する特別な制限はなく、例えば同じ番号を持つグループが複数ある場合は、最後に一致したもの(つまり最も右側の一致)が優先されます。暗黙的に番号が指定されるグループには、常にそれまでのどのグループの番号よりも大きい最小の整数が割り当てられます。
グルーピング(‘\( … \)’)構文のdigit番目の出現箇所に一致したテキストと同一のテキストに一致します。
言い換えれば、グループの終了後、そのマッチャーはそのグループでマッチしたテキストの開始位置と終了位置を記憶します。その後、正規表現の中で ‘\’ の後に digit を続けることで、それがどのようなテキストであったとしても、同じテキストにマッチさせることができます。
正規表現全体に現れる最初の9つのグループ化構文に一致する文字列は、正規表現内で開き括弧が現れる順に1から9までの番号が割り当てられます。したがって、‘\1’から‘\9’までを用いて、対応するグループ化構文にマッチしたテキストを参照できます。
例えば、‘\(.*\)\1’は、同一の2つの部分から構成される改行を含まない任意の文字列にマッチします。‘\(.*\)’は前半部分にマッチし、その内容は任意ですが、それに続く‘\1’は全く同じテキストにマッチしなければなりません。
「\( … \)」という構文が複数回マッチした場合(例えば、その後に「*」が続く場合など)、最後のマッチのみが記録されます。
正規表現内の特定のグループ化構文が一度もマッチしなかった場合――例えば、使用されなかった選択肢の中や、0回繰り返された繰り返しの中に現れた場合など――、対応する「\digit」構文は何もマッチしません。あえて例を挙げると、「\(foo\(b*\)\|lose\)\2」は「lose」にマッチしません。大きなグループ内の2番目の選択肢がそれにマッチしますが、その後の「\2」は未定義であるため、何もマッチできないからです。しかし、「foobb」にはマッチできます。なぜなら、最初の選択肢が「foob」にマッチし、「\2」が「b」にマッチするからです。
単語を構成する任意の文字に一致します。どの文字がこれに該当するかは、エディタの構文テーブルによって決定されます。構文テーブルを参照してください。
単語構成要素ではない任意の文字に一致します。
構文が code である任意の文字に一致します。ここで code は構文コードを表す文字です。例えば、単語構成要素には ‘w’、空白には ‘-’、開き括弧には ‘(’ などが用いられます。空白の構文を表すには、‘-’ またはスペース文字を使用してください。構文コードとそれらを表す文字の一覧については、構文クラス表を参照してください。
構文が code ではない任意の文字に一致します。
カテゴリが code である任意の文字に一致します。ここで code はカテゴリを表す文字です。例えば、標準カテゴリテーブルでは、‘c’ は漢字を、‘g’
はギリシャ文字を表します。現在定義されているすべてのカテゴリの一覧は、M-x describe-categories RET で確認できます。また、define-category 関数を使用して、標準カテゴリに加えて独自のカテゴリを定義することも可能です(カテゴリ を参照)。
カテゴリが code ではない任意の文字に一致します。
以下の正規表現構文は空文字列にマッチします――つまり、文字を一切消費しません――が、マッチするかどうかはコンテキストによって異なります。いずれの場合も、バッファのアクセス可能な部分の先頭と末尾は、あたかもバッファの実際の先頭と末尾であるかのように扱われます。
空文字列にマッチしますが、照合対象のバッファまたは文字列の先頭である場合に限ります。
空文字列にマッチしますが、照合対象のバッファまたは文字列の末尾でのみマッチします。
空文字列にマッチしますが、一点のみです。(文字列との照合において、この構文は定義されていません。)
空文字列にマッチしますが、単語の先頭または末尾にある場合に限られます。したがって、‘\bfoo\b’は、独立した単語としての‘foo’のあらゆる出現箇所にマッチします。‘\bballs?\b’は、独立した単語としての‘ball’または‘balls’にマッチします。
‘\b’は、直後にどのようなテキストが続いていても、バッファ(または文字列)の先頭または末尾にマッチします。
空文字列にマッチしますが、単語の先頭や末尾、あるいはバッファ(または文字列)の先頭や末尾ではマッチしません。
空文字列にマッチしますが、単語の先頭である場合に限ります。‘\<’は、単語構成文字が続く場合に限り、バッファ(または文字列)の先頭にマッチします。
空文字列にマッチしますが、単語の末尾に限られます。‘\>’は、内容が単語構成文字で終わっている場合に限り、バッファ(または文字列)の末尾にマッチします。
空文字列にマッチしますが、シンボルの先頭である場合に限ります。シンボルとは、1つ以上の単語またはシンボル構成文字の並びのことです。‘\_<’は、シンボル構成文字が続く場合に限り、バッファ(または文字列)の先頭にマッチします。
空文字列にマッチしますが、シンボルの末尾である場合に限られます。‘\_>’は、内容がシンボル構成文字で終わっている場合に限り、バッファ(または文字列)の末尾にマッチします。
すべての文字列が有効な正規表現であるとは限りません。例えば、終了記号の ‘]’ を欠いたまま括弧式の中で終わっている文字列は無効であり、単一の ‘\’ で終わる文字列も同様に無効です。無効な正規表現がいずれかの検索関数に渡されると、invalid-regexp エラーが通知されます。