正規表現

数字をあらわす正規表現を書いてみた。

  1 #!/usr/bin/ruby -w
  2
  3 puts "input number"
  5
  6 while gets
  7   if ~/^-?(\d|[1-9]\d+)(\.\d+)?$/ then
  8       puts "number"
  9       printf("result=%.3f\n", $_)
 10   else
 11       puts "not number"
 12   end
 13 end

01みたいに先頭が0の複数桁の数字をはじく。
小数点は一回だけ。
小数点のあとには絶対数字。

これを書いてて先読み、戻り読みとか忘れていたから復習した。

肯定の戻り読み・・「(?<=..)」
否定の戻り読み・・「(?<!..)」
肯定の先読み・・「(?=..)」
否定の先読み・・「(?!..)」