数値データかどうかのチェック
モチベーション
AWKの場合
プログラム
BEGIN{ FS = ',' } /^[+-]?([0-9]+[.]?[0-9]*|[.][0-9]+)([eE][+-]?[0-9]+)?$/{ print $0; } END{ }
- BEGIN内では、フィールドセパレータ(FS)をカンマに設定している。
概略
- 「^」:最初にマッチ
- 「$」:最後にマッチ
- 「[+-]?」:+もしくは-が付いても付かなくても構わない。
- 最初の小かっこ内は、仮数部に引っかかるようなパターンである。
- 次の小かっこ内は、指数部に引っかかるようなパターンである。ただし、カッコ後に「?」が付いているので、指数部はあってもなくても構わない。
仮数部
- [0-9]+で1コ以上の数値の並び。
- 「[.]?」で小数点があってもなくても構わない。
- [0-9]*でその後の数字が0コ以上。
- 「|」は、または、の意。整数部が0の場合省略可能。
指数部
- 指数部は「[eE]」で表記。プログラムによってはDとかでも出力されるので、[eED]としておけば、「e」もしくは「E」もしくは「D」で引っかかるようにできる。
- 「[+-]?」は指数部のプラスマイナスにマッチする。あってもなくても良い
- 「[0-9]+」は「1.0E-10」の「10」なんかに引っかかる。「+」が付いているので、1コ以上の数字が必要。
- 最後の「?」は、指数部全体にかかるので指数部はあってもなくても構わない。
この表現はPerlでも使える。
- 作者: A.V.エイホ,P.J.ワインバーガー,B.W.カーニハン,足立高徳
- 出版社/メーカー: USP研究所
- 発売日: 2010/01/01
- メディア: 単行本(ソフトカバー)
- クリック: 1回
- この商品を含むブログを見る