ホーム > 読んだ >

詳説
正規表現

書誌

tagPerl
authorJeffrey E. F. Friedl
editor歌代和正(監訳), 春遍雀來, 鈴木武生(訳)
publisherオライリー・ジャパン
year1999
price4,300
isbn900900-45-1

履歴

editor唯野
2001.6.20読了
2001.6.21公開
2002.11.28修正
2012.1.17タグ追加

カバー通称フクロウ本。正規表現(regular expression : regex)を正面から扱った貴重な本である。最近は類書も出ているようだが、現在でも正規表現を本格的に掘り下げて扱う本は実質的に本書しかないといっていいだろう。正規表現は私も始めは意味不明な記号の羅列に見えて敬遠していたもののひとつだが、今では「知っててよかった」と思うもののひとつである。

むろん、正規表現だけでは単なるマッチングなので、それと併用できるツール(Perl etc..)への習熟が一方では必要になるものの、そこから得られるパワーは非常に強力である。正直なところ、個人的には本書で紹介されているような一部の高度な最適化の求められるケースはあまり多くないように思ったが(内容が完全に理解できていないということだ :-))、Perl における詳細な正規表現ルール(本書の約 1/3 がそれに当てられている)といった具体的な詳細の数々は、確かに関連書籍で薦められるだけの頼り甲斐がある。私自身はツールとして Perl しかほとんど使わないので他のツールでの話などは流し読み程度だが、逆にいうと Perl を本格的に使いこなしたい場合における避けて通れない一冊なのは確かだろう。

抄録(一般)

5/78/82

正規表現は特殊な意味を持ったメタ文字(meta character)とそれ以外の普通のテキスト文字であるリテラル(literal)から構成される。メタ文字の扱いはツールによって幅があるため、あるエスケープをそのツールがサポートしなければ、それは単なる文字列の正規表現として渡されることになる。

10/58

「^cat$」は cat だけから成る行、「^$」は空行、「^」のみは行頭のある行、即ち空行を含む全ての行にマッチする。最後はケースは「$line =~ s/^/> /;」で行頭に引用記号を付けるようなときに利用できる。

11/123/140

否定文字クラスは「指定されていない文字とマッチせよ」であって、「指定されているものとマッチしてはならない」という意味ではない。これに関連してマッチは常にマッチ不成立よりも優先される = 必須でないものは必ずマッチに成功する点がある。これを見逃すと不要なものへのマッチが起こることになる。

13/24/118/144/146/195

対象テキストを十分に理解した上で正規表現を使うということ。正規表現の場合、必要なマッチができれば戦いの半分は既に終わっている。残り半分は不要なときにマッチさせないということであり、つまりマッチしないときの結果を考えるということになる。(言い換えれば必要なものだけを書き、それが正規表現エンジンにどう解釈されるのか理解するということ。)

例えば「a 1234 num」への「[0-9*]」という正規表現は、「a」の時点でマッチしてしまうので、数字のところまで到達しない。

16/55/87

全文を読まれる場合はログインしてください


Up