美山牛乳はもはやノルマ。ごきげんよう。
プログラミングで文字列のパースとか自前でやらないほうがいいという話。
ネットワーク機器のログからISO8601形式の日時を読み取って何かしらの処理をする、という実装をしたことがありまして。
機器とつないで動かしてみると、一見順調ですがたまにエラーが発生しました。
こういう確率的に起こる事象というのが一番難しい…。
デバッグして調べたところ、日時の中に分や秒、さらにはまれに時も出力されていないケースがありました。
つまりそれでパースに失敗していたと。
そこで恥ずかしながら初めて省略表記を知ったという。
それまでは文字列の中に時分秒が揃っている前提で取得しようとしていたわけです。
省略表記にも対応するとなると正規表現一発では書けません。
複数の書式を順に試すという実装が思いつきますが、でもそれで本当に網羅できるのか。
まだ自分の知らない表記があるんじゃないか。
そこまで考えて、最初からプログラミング言語のライブラリに頼ればよかったと気づいたわけです。
現に、後から知ったんですが年から略す上位省略もあります。
対象の機器が使用している書式だけ対応すれば十分だと思うかもしれませんが、それだってファームウェア更新やリプレースで変化する可能性があります。
自前で実装しようとすることがどれだけ危険かを思い知らされた経験となりました。
ってただのしくじり先生ですがー。
他にも、「メールアドレスの正規表現」をうっかり検索すると血みどろの争いを目にします(何
パースはにわかが手を出していい領域ではないということでしょう。
0 件のコメント: