ここでは、任意個数の白文字を伴った文末を認識するために
Emacsで使われている複雑な正規表現について述べます。
それは変数sentence-end
の値です。
まず、タブ文字と空白を区別するためにLisp構文の文字列として 正規表現を示します。 文字列定数はダブルクォートで始まり終ります。 ‘\"’は文字列の一部としてのダブルクォート、 ‘\\’は文字列の一部としてのバックスラッシュ、 ‘\t’はタブ、‘\n’は改行を表します。
"[.?!][]\"')}]*\\($\\| $\\|\t\\| \\)[ \t\n]*"
対照的に、変数sentence-end
を評価するとつぎのように
なっているはずです。
sentence-end ⇒ "[.?!][]\"')}]*\\($\\| $\\| \\| \\)[ ]*"
この出力では、タブと改行はそれ自身として現れています。
この正規表現には、連続してつぎのような4つの部分が含まれています。
[.?!]
[]\"')}]*
\"
は、文字列内のダブルクォートを表すLisp構文である。
最後の‘*’は、直前の正規表現(この場合は文字選択)を
0回以上繰り返すことを表す。
\\($\\| $\\|\t\\| \\)
[ \t\n]*