正規表現の神秘を探る「alamo」

プログラマーやSEであれば、正規表現を使ったことがないという人はまずいないだろう。それぐらい便利な存在だ。もし正規表現がなかったとしたら、プログラムを組むと言う作業は本当に嫌な事だったかも知れない。

しかし、正規表現の使い方は分かっていても、実際にどのような解析を行って動作しているのか分かっている人はいるだろうか。恐らくはっきりと明確に言える人は多くないだろう。そこで、このソフトウェアを使ってみよう。

今回紹介するオープンソース・ソフトウェアは alamo 、正規表現エンジンだ。

alamo の特徴としては、正規表現を解析して、それをGraphvizで画像に変換できる点だ。例えば、上記の画像は「A*(B|C)D」を表したものになる。CDもヒットするし、AAAABDもヒットすると言うのが良く分かるだろう。

使い方は簡単で、コマンドラインベースで

alamo < regexpfile | dot.exe -Tjpg > jpegfile

と言った具体のコマンドを実行する。ここで、regexpfileは正規表現の書かれたファイルで(最後に要改行)、dot.exeはGraphvizに入っている実行ファイルだ。

こちらは「あい..お」を実行した所。日本語を上記コマンドでそのまま実行すると文字化けてしまうので、一度ファイルとして出力し、UTF-8に変換してからdot.exeに渡すとうまくいく(と言ってもグラフのラベルが文字化けているが)。

 

 

これはかなり長いが、([0-9]{4})-([0-9]{2})-([0-9]{2})と言う2007-04-09を分割するような場合の正規表現。

他にも様々な正規表現を試してみると、より深く理解できるようになるだろう。普段何気なく使っているだけに、試してみると面白い。

 

公式サイト
 http://alamo.sourceforge.jp/

SourceForge.jp: Project Info - alamo(プロジェクトサイト)
 http://sourceforge.jp/projects/alamo/