プログラミング言語AWK 演習問題3-2

数をあらわす一般的な正規表現ってなんだろ。追加するのは当然 isnum() になんだろうけども。

小数点つきにするくらい?

/^[+-]?[0-9]+[.]?[0-9]+$/

速度への影響もちょっとわかんないなぁ、と思って解答みたら、ここだけ用意されてない……。

2007-12-23追記

http://d.hatena.ne.jp/Rocco/20071219/p1#c
こちらで数の正規表現にコメントを頂いた。確かに一桁の数字が抜けてしまってる。

逆ポーランドのパターンは、実は正規表現の解説で例に出ているものに「|」以降を加えたものみたい。

/^[+-]?([0-9]+[.]?[0-9]*|[.][0-9]+)$/

でもこれだと「1.」とか「0021」みたいなのにもマッチしてしまうような。いいのかな?

とか考えて、こういう感じにしてみた。

/^[+-]?([0]|[1-9][0-9]*)([.][0-9]+)?$/

指数表現の方は、表記方法そのものを調べてるうちに深みにはまったので追求はとりやめ……。数学アレルギーには辛い。