GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/emacs/Regexp-Backslash.html ・ emacs-doc.conao3.com

17.7 正規表現におけるバックスラッシュ

ほとんどの場合、‘\’ に続く任意の文字は、その文字にのみ一致します。ただし、いくつかの例外があります。‘\’ で始まる2文字のシーケンスは、特別な意味を持ちます。このシーケンスの2文字目は、単独で使用される場合は常に通常の文字となります。以下に ‘\’ 構文の表を示します。

\|

代替パターンを指定します。a と b という2つの正規表現の間に ‘\|’ を挟んだ表現は、a または b のいずれかがマッチした場合に、そのテキストにマッチします。これは、まず a のマッチを試み、それが失敗した場合に b のマッチを試みることで動作します。

したがって、‘foo\|bar’は‘foo’または‘bar’のいずれかにマッチしますが、それ以外の文字列にはマッチしません。

‘\|’は、取り得る最大の周辺式に適用されます。‘\|’のグループ化能力を制限できるのは、周囲の‘\( … \)’グループのみです。

‘\|’の複数回の使用に対応できるよう、完全なバックトラッキング機能が備わっています。

\( … \)

は、3つの目的を果たすグループ化構文です:

  1. 他の操作のための ‘\|’ の選択肢群を囲む。これにより、‘\(foo\|bar\)x’ は ‘foox’ または ‘barx’ のいずれかにマッチする。
  2. 後置演算子 ‘*’、‘+’、および ‘?’ が作用する複雑な式を囲むため。これにより、‘ba\(na\)*’ は、任意の数(0個以上)の ‘na’ 文字列を伴う ‘bananana’ などにマッチします。
  3. 後で参照するために、一致した部分文字列を記録する。

この最後の用法は、括弧書きのグループ化という考え方から生じたものではなく、同一の ‘\( … \)’ 構文に第2の意味として割り当てられた独立した機能です。実際には、通常これら2つの意味の間で衝突が生じることはありません。衝突が生じる場合には、後述するシャイグループを使用できます。

\(?: … \)

マッチした部分文字列を記録しないシャイグループを指定します。「\d」を用いてこのグループを参照することはできません(後述)。これは、正規表現を機械的に結合する際に有用で、参照対象となるグループの番号付けに影響を与えることなく、構文上の目的でグループを追加できます。

\d

‘\( … \)’ 構文の d 回目の出現にマッチしたのと同じテキストにマッチします。これを 後方参照 と呼びます。

「\( … \)」という構文が終了した後、マッチャーはその構文でマッチしたテキストの開始位置と終了位置を記憶します。その後、正規表現の続きで、「\」に数字のdを続けることで、「d番目の\( … \)構文でマッチしたのと同じテキストにマッチする」という意味を表現できます。

正規表現に現れる最初の9つの ‘\( … \)’ 構文に一致する文字列には、正規表現内で開き括弧が現れる順に1から9までの番号が割り当てられます。したがって、‘\1’ から ‘\9’ を用いて、対応する ‘\( … \)’ 構文に一致するテキストを参照できます。

例えば、‘\(.*\)\1’は、同一の2つの部分から構成される改行を含まない任意の文字列にマッチします。‘\(.*\)’は前半部分にマッチし、その内容は任意ですが、それに続く‘\1’は全く同じテキストにマッチしなければなりません。

特定の ‘\( … \)’ 構文が複数回マッチした場合(その後に ‘*’ が続く場合などに容易に起こり得ます)、最後のマッチのみが記録されます。

\{m\}

は、m回の繰り返しを指定する後置演算子です。つまり、直前の正規表現が連続してちょうどm回マッチする必要があります。例えば、‘x\{4\}’は文字列‘xxxx’にのみマッチし、それ以外にはマッチしません。

\{m,n\}

は、m から n 回の繰り返しを指定する後置演算子です。つまり、直前の正規表現は少なくとも m 回、最大で n 回マッチする必要があります。n を省略した場合は上限はありませんが、直前の正規表現は少なくとも m 回マッチする必要があります。
‘\{0,1\}’は‘?’と等価です。
‘\{0,\}’は‘*’と等価です。
‘\{1,\}’は‘+’と等価です。

\`

空文字列に一致しますが、照合対象の文字列またはバッファ(あるいはそのアクセス可能な部分)の先頭においてのみ一致します。

\'

空文字列に一致しますが、照合対象の文字列またはバッファ(あるいはそのアクセス可能な部分)の末尾においてのみ一致します。

\=

空文字列に一致するが、一点のみ。

\b

空文字列にマッチしますが、単語の先頭または末尾にある場合に限られます。したがって、‘\bfoo\b’は、独立した単語としての‘foo’のあらゆる出現箇所にマッチします。‘\bballs?\b’は、独立した単語としての‘ball’または‘balls’にマッチします。

‘\b’は、直後にどのようなテキストが続いていても、バッファの先頭または末尾にマッチします。

\B

空文字列に一致しますが、単語の先頭や末尾では一致しません。

\<

空文字列にマッチしますが、単語の先頭である場合に限ります。‘\<’は、単語構成文字が続く場合に限り、バッファの先頭にマッチします。

\>

空文字列にマッチしますが、単語の末尾に限られます。‘\>’は、バッファの内容が単語構成文字で終わっている場合にのみ、バッファの末尾にマッチします。

\w

単語を構成する任意の文字に一致します。どの文字がこれに該当するかは、構文テーブルによって決定されます。The Emacs Lisp Reference Manualの構文テーブルを参照してください。

\W

単語構成文字以外の任意の文字に一致します。

\_<

空文字列にマッチしますが、シンボルの先頭である場合に限ります。シンボルとは、1つ以上のシンボル構成文字の並びのことです。シンボル構成文字とは、その構文が ‘w’ または ‘_’ である文字のことです。‘\_<’ は、その後にシンボル構成文字が続く場合にのみ、バッファの先頭でマッチします。単語と同様に、どの文字がシンボル構成文字であるかは構文テーブルによって決定されます。

\_>

空文字列にマッチしますが、シンボルの末尾である場合に限られます。‘\_>’がバッファの末尾にマッチするのは、内容がシンボル構成文字で終わっている場合のみです。

\sc

構文が c である任意の文字に一致します。ここで c は特定の構文クラスを指定する文字です。例えば、単語構成要素には ‘w’、空白には ‘-’ または ‘ ’、通常の句読点には ‘.’ などが該当します。The Emacs Lisp Reference Manual の 構文クラス表 を参照してください。

\Sc

構文が c ではない任意の文字に一致します。

\cc

カテゴリ c に属する任意の文字にマッチします。例えば、‘\cc’ は漢字に、‘\cg’ はギリシャ文字にマッチします。既知のカテゴリの説明については、M-x describe-categories RET と入力してください。

\Cc

カテゴリ c に属しない任意の文字に一致します。

単語や構文に関する構成要素は、構文テーブルの設定によって制御されます。The Emacs Lisp Reference ManualのSyntax Tablesを参照してください。