^[a-zA-z]


プログラムに標記の正規表現が混じっていました。テストケースを作っていたところ、”^” がこの表現にマッチすることになってパニックしていました。

はい、2番目の ”z” は正しくは ”Z” でした。

不幸なことにたまたまテストケースで引っかかったのが ”^” だったものだから、正規表現の先頭に書いた ”^” の解釈に問題があるのだと勘違いして、無関係な方面に彷徨ってしまいました。

結論からすると、ASCII コードの ”Z” と ”a” の間にある ”[]^_`” に限って誤って解釈されるバグとなっていました。少し時間を浪費したけれども、”^” で見つかったのはむしろラッキーだったのかもしれません。

で、どうして ”z” と小文字になったかといえば、いま借りている留学生中の学生さんが使っていたキーボードがヘボくって、ときどき SHIFT キーが刺さるためです。すぐにも交換しないと。。。

^[a-zA-z]」への1件のフィードバック

  1. このバグ [:alpha:] とかを使っていれば避けられたんですよね。面倒くさがっていた自分が悪いんでしょう。そこで、早速、a-zA-Z を [:alpha:] に、d を [:digit:] に、0-9a-fA-f を[:xdigit:] に書き直したのだけど、マッチのときにエラーが出て動きません。なんの呪いだろうか?仕方なしに、元に戻しました。

    このプログラムは Gauche で pregexp を使ってのことです。あとで ypsilon でも確認してみよっと。

コメントは受け付けていません。