2008年03月07日 00:00 [Edit]
get($one) if $you =~ /regexp user/;# 書評 - 入門正規表現
技術評論社書籍編集部池本さんより献本御礼。
初出2008.03.05;販売開始まで掲載404 Blog Not Found:書評x3 - SQL本三大対決
言語内言語としてこれだけ使われるようになったSQL。そうするともう一つの言語内言語、正規表現が気になる。しかしこちらの方はSQLと違って、現在のところ「フクロウ本」の一人勝ちのように思える。誰か書かない?
キタコレ!それも想定の範囲内の出版社と、想定の範囲外の著者の組み合わせで。
本書「入門正規表現」は、タイトルどおりの本。正規表現に関しては今まで「フクロウ本」こと「詳細 正規表現」がほぼ唯一の選択肢だったが、原著も訳書も6,000円近い大著であり、初心者向けとはとても言えなかった。本書は「ラクダ本」に対する「リャマ本」の役目を、正規表現という言語において担うものだ。
目次 - 書籍案内:入門 正規表現 ―検索・置換・テキスト処理に強くなる!|gihyo.jp … 技術評論社より- 第0章 正規表現って,どうゆう意味? - それは言葉の規則性,パターンを表します
- 第1章 正規表現の部品を理解しよう - 主役は文字指定と量指定
- 第2章 文字を指定する正規表現 - 具体的な文字と抽象的な指定
- 第3章 量を指定する正規表現 - "満腹"と"腹八分"の違いが重要
- 第4章 位置を指定する正規表現 - 対象テキストの形や構造をつかむ
- 第5章 特殊な指定をする正規表現 - 便利な小道具の数々
- 第6章 正規表現を何のために使う? - 検索と編集が二大目的
- 第7章 自作のプログラムから正規表現を使う
- 第8章 正規表現アラカルト
- おわりに - bonus track
本書の素晴らしいのは、「入門」だからといって全く手を抜いていない事。量指定子(quantifier)の.*と.*?の違いもきちんと解説しているし、今なお充分使われているとは言えない(?=lookahead) および (?<=lookbehind) assertionsもきちんと紹介している。
それでいて、ページ数が150ページあまりしかないので、見たいページがすぐに出てくる。版型も「オライリー動物」版でなくてA5。これは使いやすい。
「これは思い切ったな」というのが、文字の例としてかな漢字を遠慮なく使っている点。Perl 5.8以前の正規表現では、漢字を一文字として扱えなかったのだが、もうPerl 5.8が出てから5年あまり。そろそろ安心して使って良いだろう。ただし「ホスト言語」には注意。Ruby 1.8って[一-龠]できたっけ?鬼車入りの1.9はOKだったはずだけど。
それでちょっと不安になったのが、数少ない言語依存の例で、著者がJavaを使っている事。JavaのStringクラスの「文字」って、サロゲートペアは二文字だったはず。JavaもJavaScriptも、この問題を今なお抱えているはずなのだけど。詳しくは
- 404 Blog Not Found:perl, python & ruby - chr() vs. Unicode
- 404 Blog Not Found:perl, python & ruby - ord() vs. Unicode
を参照のこと。
404 Blog Not Found:書評 - 暗算の達人著者としてはつっこみどころが多い人でもあるのだけど
なのだけれども、本書は入門書でありながら、上級者レベルまで納得できる出来。特に薄いところ、「ホスト言語」にほぼ非依存なのが最高である。そして手前味噌ながら、本書のような本に使えるレベルまで正規表現が強化されたことを、Perl 5.8の産婆の一人として誇らしく思う。
それだけに、Java(Script)?の「文字」の扱いには時折イラっと来てしょうがないのだけど。最近はBMPに載ってない字を扱う事も増えて来たし....
Dan the Regular Expressionist
ところで著者の生年が1942年というのは最近知った(50年代と思ってた)。これが一番の驚きだったりして。



