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