オライリー矢野様より献本御礼。いつもありがとうございます。

初出2008.04.23; 販売開始まで更新

「正規表現のバイブル」も、第三版となって邦訳登場。

本書、「詳説 正規表現 第3版」は、正規表現(regexp)に関するこの地球上で最も包括的(comprehensive)な専門書。かつては入門書すら存在せず、そのおかげで「正規表現といえばフクロウ」だった第一版から10年。正規表現の利用シーンは格段に増え、書籍の方も「入門正規表現」が出るなど、正規表現の敷居は格段に低くなった。

目次 - oreilly.co.jp -- Online Catalog: 詳説 正規表現 第3版より
    はじめに
    1章 正規表現入門
    2章 初心者向けのサンプル
    3章 正規表現の機能と方言
    4章 正規表現処理のメカニズム
    5章 正規表現の実践的なテクニック
    6章 効率のよい正規表現の作り方
    7章 Perl
    8章 Java
    9章 .NET
    10章 PHP
    索引

それでは、本書はどうかというと、「やはり本家はいい」ということになる。正規表現一般に関しては「入門正規表現」でもいいが、ホスト言語をまたがった正規表現の「方言」や、メカニズムやテクニックといった中級以上の話題ではさすがに役者不足。「入門正規表現」でもプロの入口までは行けるが、そこから先は本書の独擅場だ。

それでは、本書は初心者お断りかというと、そうでもない。いや正確にいうとそうでもなくなった。第一版はかなり難しかったが、第三版である本書は単に新しい話題を加えたに留まらず、古い話題でわかりにくかった部分をばっさり切っている。そのおかげで前版よりはるかに初心者に優しい一冊に仕上がっている。オライリーによると、「財布にもやさしい」とのことである。確かに税込み5,040円と、わずかに5,000円を越えてしまっているが、それでも第二版の定価は5,670円だったので1割以上のコストダウンだ。

一つ残念だったのが、PHPが加わった一方で、JavaScriptが索引にすら登場しないこと。原著は2006年8月発行であるが、その頃にはすでにJavaScriptも「汚名」を雪いで、Ajaxの利用が広がっていたことを考えれば、これは実にもったいない。ましてや今やJavaScriptの利用はその時よりもさらに広がっている。

しかも、JavaScriptにおける正規表現の利用法というのは、「素直」かつ「きれい」なのだ。例えばPerlの

my %esc = ( '<' => '&lt;', '>' => '&gt;', '&' => '&amp;', '"' => '&quot;' );
sub encode_entities{
  my $str = shift;
  $str =~ s{([<>&"])}{$esc{$1}}gex;
  $str;
}

は、JavaScriptだと

var esc =  {'<':'&lt;', '>':'&gt;', '&':'&amp;', '"':'&quot;'};
function encode_entities(str){
  return str.replace(/[<>&"]/g, function(m0){
    return esc[m0];
  });
};

となるが、$1という特殊変数が不要な点も、特別な文法を用いずに置換をclosureでやっている点もエレガントである(その分冗長でもあるが)。コラム扱いでもいいから紹介ぐらいはしておいて欲しかった。

その点を除けば、本書は文句無しに正規表現のバイブルである。個人単位でなくとも、会社単位では常備しておきたいものだ。

Dan the Regular Expressionist