プログラムに標記の正規表現が混じっていました。テストケースを作っていたところ、”^” がこの表現にマッチすることになってパニックしていました。
はい、2番目の ”z” は正しくは ”Z” でした。
不幸なことにたまたまテストケースで引っかかったのが ”^” だったものだから、正規表現の先頭に書いた ”^” の解釈に問題があるのだと勘違いして、無関係な方面に彷徨ってしまいました。
結論からすると、ASCII コードの ”Z” と ”a” の間にある ”[]^_`” に限って誤って解釈されるバグとなっていました。少し時間を浪費したけれども、”^” で見つかったのはむしろラッキーだったのかもしれません。
で、どうして ”z” と小文字になったかといえば、いま借りている留学生中の学生さんが使っていたキーボードがヘボくって、ときどき SHIFT キーが刺さるためです。すぐにも交換しないと。。。
このバグ [:alpha:] とかを使っていれば避けられたんですよね。面倒くさがっていた自分が悪いんでしょう。そこで、早速、a-zA-Z を [:alpha:] に、d を [:digit:] に、0-9a-fA-f を[:xdigit:] に書き直したのだけど、マッチのときにエラーが出て動きません。なんの呪いだろうか?仕方なしに、元に戻しました。
このプログラムは Gauche で pregexp を使ってのことです。あとで ypsilon でも確認してみよっと。