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

35.3.3.1 rx 正規表現における構文

rx 正規表現における各種形式について以下に説明します。短縮表記の rx は、任意の rx 形式を表します。rx… は 0 個以上の rx 形式を意味し、特に断りのない限り、これらの形式を (seq …) サブフォームでラップしたかのように順次照合します。

これらはすべて rx マクロに対する有効な引数です。すべての形式は記述されたセマンティクスによって定義されており、対応する文字列正規表現は理解を助ける目的でのみ提供されています。A、B、… は、その中の(適切に括弧で囲まれた)文字列正規表現の部分式を表します。

リテラル

"some-string"

文字列 ‘some-string’ をそのまま照合します。文字列正規表現とは異なり、特別な意味を持つ文字はありません。

?C

文字「C」をそのまま照合してください。

シーケンスと代替

(seq rx…)
(sequence rx…)
(: rx…)
(and rx…)

rx を順にマッチさせます。引数がない場合、この式は空文字列にマッチします。
対応する文字列正規表現: ‘AB…’(部分式が連続)。

(or rx…)
(| rx…)

rx のうちちょうど1つにマッチします。すべての引数が文字列、文字、または同様に制約された or 形式である場合、常に可能な限り長いマッチが使用されます。それ以外の場合は、最長のマッチか、最初(左から右の順)のマッチのいずれかが使用されます。引数がない場合、この式は何もマッチしません。
対応する文字列正規表現: ‘A\|B\|…’.

unmatchable

いかなるマッチも拒否します。(or)と同等です。regexp-unmatchableを参照してください。

繰り返し

通常、繰り返し構文は貪欲であり、可能な限り多くマッチしようとします。一部の構文は非貪欲であり、可能な限り少なくマッチしようとします(非貪欲な繰り返しを参照)。

(zero-or-more rx…)
(0+ rx…)

rxに0回以上マッチします。デフォルトでは貪欲にマッチします。
対応する文字列正規表現: ‘A*’ (貪欲), ‘A*?’ (非貪欲)

(one-or-more rx…)
(1+ rx…)

rxに1回以上マッチします。デフォルトでは貪欲にマッチします。
対応する文字列正規表現: ‘A+’ (貪欲), ‘A+?’ (非貪欲)

(zero-or-one rx…)
(optional rx…)
(opt rx…)

rx に1回マッチさせるか、空文字列にマッチさせる。デフォルトでは貪欲にマッチする。
対応する文字列正規表現: ‘A?’ (貪欲), ‘A??’ (非貪欲).

(* rx…)

rxに0回以上マッチする。貪欲。
対応する文字列正規表現: ‘A*’

(+ rx…)

rxに1回以上マッチする。貪欲。
対応する文字列正規表現: ‘A+’

(? rx…)

rx に1回マッチさせるか、空文字列にマッチさせる。貪欲。
対応する文字列正規表現: ‘A?’

(*? rx…)

rxに0回以上マッチします。非貪欲です。
対応する文字列正規表現: ‘A*?’

(+? rx…)

rxに1回以上マッチする。非貪欲。
対応する文字列正規表現: ‘A+?’

(?? rx…)

rx または空文字列にマッチします。非貪欲です。
対応する文字列正規表現: ‘A??’

(= n rx…)
(repeat n rx)

rxにちょうどn回マッチしてください。
対応する文字列正規表現: ‘A\{n\}’

(>= n rx…)

rxにn回以上マッチさせる。貪欲。
対応する文字列正規表現: ‘A\{n,\}’

(** n m rx…)
(repeat n m rx…)

rxに少なくともn回、最大でm回マッチさせる。貪欲法。
対応する文字列正規表現: ‘A\{n,m\}’

一部の繰り返し形式における貪欲性は、以下の構文を用いて制御できます。ただし、このようなマッチングが必要な場合は、通常、前述の明示的な非貪欲形式を使用する方が適切です。

(minimal-match rx)

非貪欲マッチングを用いて、rx を zero-or-more、0+、one-or-more、1+、zero-or-one、opt および optional と照合します。

(maximal-match rx)

貪欲マッチングを用いて、rx を zero-or-more、0+、one-or-more、1+、zero-or-one、opt、optional と照合します。これがデフォルトです。

単一文字のマッチング

(any set…)
(char set…)
(in set…)

set のいずれかに含まれる単一の文字にマッチします。各 set は、文字、その文字集合を表す文字列、範囲、または文字クラス(後述)のいずれかです。範囲は、"A-Z" のようなハイフン区切りの文字列か、(?A . ?Z) のような文字のコンスのいずれかです。

なお、この構文における文字列では、ハイフン (-) は範囲区切り文字として機能するため、特殊な扱いとなります。ハイフンを含める場合は、独立した文字として、あるいは1文字の文字列として追加してください。
対応する文字列正規表現: ‘[…]’

(not charspec)

charspec に含まれない文字に一致します。charspec には、文字、1文字の文字列、any、not、or、intersection、syntax または category 形式、あるいは文字クラスを指定できます。charspec が or 形式である場合、その引数には intersection と同様の制約が適用されます。詳細は以下を参照してください。
対応する文字列正規表現: ‘[^…]’, ‘\Scode’, ‘\Ccode’

(intersection charset…)

すべての charset に含まれる文字にマッチします。各 charset は、文字、1文字の文字列、文字クラスを含まない any 形式、または引数がいずれも charset である intersection、or、not 形式のいずれかとなります。

not-newline, nonl

改行以外の任意の文字にマッチします。
対応する文字列正規表現: ‘.’ (ドット)

anychar, anything

任意の文字に一致。
対応する文字列正規表現:‘.\|\n’(例)

文字クラス

名前付きキャラクタークラスのキャラクターに一致:

alpha, alphabetic, letter

英字にマッチします。より正確には、Unicodeの ‘general-category’ プロパティによって英字であることが示されている文字にマッチします。

alnum, alphanumeric

英字および数字にマッチします。より正確には、Unicodeの ‘general-category’ プロパティによって、英字または10進数字であることが示されている文字にマッチします。

digit, numeric, num

数字 ‘0’–‘9’ を対応させてください。

xdigit, hex-digit, hex

16進数の桁 ‘0’–‘9’、‘A’–‘F’、および ‘a’–‘f’ を対応させてください。

cntrl, control

コードが0–31の範囲にある任意の文字にマッチします。

blank

水平方向の空白文字にマッチします。より正確には、Unicodeの ‘general-category’ プロパティによって空白区切り文字であることが示されている文字にマッチします。

space, whitespace, white

空白文字の構文を持つ任意の文字に一致します(構文クラス表を参照)。

lower, lower-case

現在の大文字・小文字判定テーブルに基づいて、小文字に一致するものすべてにマッチします。case-fold-search が nil 以外の場合、大文字にもマッチします。

upper, upper-case

現在の大文字・小文字判定テーブルに基づき、任意の大文字にマッチします。case-fold-search が nil 以外の場合、任意の小文字にもマッチします。

graph, graphic

空白文字、ASCIIおよび非ASCII制御文字、サロゲート、およびUnicodeの‘general-category’プロパティで示されるUnicode未割り当てのコードポイントを除く任意の文字に一致します。

print, printing

空白文字、または graph にマッチする文字に一致します。

punct, punctuation

任意の句読点文字にマッチします。(現時点では、マルチバイト文字の場合、ワード構文に該当しないものすべてが対象となります。)

word, wordchar

単語構文を持つ任意の文字に一致します(構文クラス表を参照)。

ascii

任意のASCII文字(コード 0–127)にマッチします。

nonascii

ASCII以外の任意の文字(ただし生バイトは除く)にマッチします。

クラス space、word、punct は、現在のバッファの構文テーブルを使用しますが、上書きされる構文テキストプロパティは使用しません(構文プロパティを参照)。
対応する文字列正規表現: ‘[[:class:]]’

(syntax syntax)

構文 syntax に一致し、かつ以下のいずれかの名前である文字:

構文名構文文字
whitespace-
punctuation.
wordw
symbol_
open-parenthesis(
close-parenthesis)
expression-prefix'
string-quote"
paired-delimiter$
escape\
character-quote/
comment-start<
comment-end>
string-delimiter|
comment-delimiter!

詳細は 構文クラスの表 を参照してください。なお、(syntax punctuation) は文字クラス punctuation と同等ではありません。
対応する文字列正規表現: ‘\schar’ (ここで char は構文文字)。

(category category)

カテゴリ category に属する文字に一致させます。このカテゴリには、以下の名前のいずれか、またはそのカテゴリ文字が含まれます。

カテゴリ名カテゴリー文字
space-for-indent空間
base.
consonant0
base-vowel1
upper-diacritical-mark2
lower-diacritical-mark3
tone-mark4
symbol5
digit6
vowel-modifying-diacritical-mark7
vowel-sign8
semivowel-lower9
not-at-end-of-line<
not-at-beginning-of-line>
alpha-numeric-two-byteA
chinese-two-byteC
greek-two-byteG
japanese-hiragana-two-byteH
indian-two-byteI
japanese-katakana-two-byteK
strong-left-to-rightL
korean-hangul-two-byteN
strong-right-to-leftR
cyrillic-two-byteY
combining-diacritic^
asciia
arabicb
chinesec
ethiopice
greekg
koreanh
indiani
japanesej
japanese-katakanak
latinl
laoo
tibetanq
japanese-romanr
thait
vietnamesev
hebreww
cyrillicy
can-break|

現在定義されているカテゴリの詳細については、コマンド M-x describe-categories RET を実行してください。新しいカテゴリの定義方法については、カテゴリを参照してください。
対応する文字列正規表現: ‘\cchar’ (ここで char はカテゴリ文字)。

ゼロ幅アサーション

これらはすべて空文字列に一致しますが、特定の箇所に限られます。

line-start, bol

行頭の一致。
対応する文字列正規表現: ‘^’

line-end, eol

行末の一致。
対応する文字列正規表現: ‘$’

string-start, bos, buffer-start, bot

照合対象の文字列またはバッファの先頭での一致。
対応する文字列正規表現: ‘\`’

string-end, eos, buffer-end, eot

照合対象の文字列またはバッファの末尾でのマッチ。
対応する文字列正規表現: ‘\'’

point

ポイントでの試合。
対応する文字列正規表現: ‘\=’

word-start, bow

単語の先頭に一致。
対応する文字列正規表現: ‘\<’

word-end, eow

単語末の一致。
対応する文字列正規表現: ‘\>’

word-boundary

単語の先頭または末尾に一致。
対応する文字列正規表現: ‘\b’

not-word-boundary

単語の先頭や末尾以外であれば、どこにマッチしてもよい。
対応する文字列正規表現: ‘\B’

symbol-start

記号の先頭での一致。
対応する文字列正規表現: ‘\_<’

symbol-end

記号の末尾での一致。
対応する文字列正規表現: ‘\_>’

キャプチャグループ

(group rx…)
(submatch rx…)

rx にマッチさせ、マッチしたテキストと位置をマッチデータで参照可能にします。正規表現の最初のグループは 1 番となり、それ以降のグループには、それまでのパターン内での最大番号のグループより 1 大きい番号が割り当てられます。
対応する文字列正規表現: ‘\(…\)’

(group-n n rx…)
(submatch-n n rx…)

groupと同様だが、グループ番号nを明示的に指定する。nは正でなければならない。
対応する文字列正規表現: ‘\(?n:…\)’

(backref n)

グループ番号 n で以前にマッチしたテキストに一致させます。n は 1–9 の範囲内である必要があります。
対応する文字列正規表現: ‘\n’

動的インクルージョン

(literal expr)

Lisp式 expr を評価して得られたリテラル文字列と一致させてください。評価は呼び出し時に、現在のレキシカル環境で行われます。

(regexp expr)
(regex expr)

Lisp式 expr を評価して得られた文字列正規表現にマッチさせます。評価は呼び出し時に、現在の字句環境で行われます。

(eval expr)

Lisp式 expr を評価した結果である rx 形式と対応させてください。評価は、現在のグローバル環境において、rx の場合はマクロ展開時に、rx-to-string の場合は呼び出し時に行われます。