Emacs の正規表現

先日、m4 で使える正規表現がEmacsとほぼ同じであることを知った。

ということで Emacs の正規表現を調べ直してみる。

参考資料


英語のマニュアルと、入門 GNU Emacs 第2版を眺めました。最新版は3版です。

入門 GNU Emacs 第3版

[Amazonで詳細を見る]


- GNU Emacs Manual - Regexps
-- http://flex.ee.uec.ac.jp/texi/emacs-jp/emacs-jp_53.html
- GNU Emacs Manual
-- http://www.gnu.org/software/emacs/manual/html_mono/emacs.html#Regexps
- GNU Emacs Lisp Reference Manual
-- http://www.gnu.org/software/emacs/manual/html_mono/elisp.html#Syntax-Tables

メモ


第2版のP380あたりに「13.3 便利な組み込みEmacs関数 : 正規表現演算子のまとめ」という節がある。
その節の前後では Emacs の正規表現について言及されている。
それと、最新の英語マニュアルをオンラインで参照。

構文については構文テーブルと文字テーブルを調べるとよさげ。

演算子機能
.任意の文字にマッチ
*直前の文字・グループに0回以上繰り返しマッチ
+直前の文字・グループに1回以上繰り返しマッチ
?直前の文字・グループに0回 or 1回マッチ
\{N\}直前の文字・グループの、N回繰り返し
\{n, m\}直前の文字・グループの、nからm回の繰り返し。mが空の場合にはn回以上の繰り返し
[..]文字セット
\(グループの開始
\)グループの終了
\|前後の部分正規表現のどちらかにマッチ。部分正規表現はグループにしておくと前後の範囲が明確になる。
^正規表現の先頭にある場合、行頭または文字列の先頭
$正規表現の末尾にある場合、行頭または文字列の先頭
\n改行にマッチ
\ttabにマッチ
\<単語の先頭にマッチ
\>単語の末尾にマッチ
\b単語の最初か最後にある空文字とマッチ
\B単語の最初や最後以外の空文字とマッチ
\ <単語の先頭の空白にマッチ
\ >単語の末尾の空白にマッチ
\wエディタの構文テーブルによって決められる単語構成する文字にマッチする
\W単語を構成する文字に含まれない文字にマッチする
\s直後に記述した「構文」に含まれる文字にマッチする
\S直後に記述した「構文」に含まれない文字にマッチする
\`バッファの先頭にある空文字とマッチ
\'バッファの末尾にある空文字とマッチ
\=その場の空文字とマッチ

■セット内で特殊な意味を持つ
演算子機能
^セットの先頭にある場合には、そのセットを「マッチしない文字セット」とする
-文字の範囲を指定

■正規表現文字列中で特殊な意味を持つ
\NN番目の正規表現グループでくくられた部分文字列を代入する。右から順に1、2と数える。9番目まで。




アバウトにEmacsの正規表現を理解した。
シンボル(単語)の概念が特徴的。

構文テーブル(syntax table)については後日調べた方が良さそう。

m4 と Emacs の正規表現がのマニュアルの正規表現に該当する部分を読んだ方が良い気がして来たので次はm4のマニュアルを読む。


投稿者:としのり  日時:23:59:59 | コメント | トラックバック |
blog comments powered by Disqus