javaで正規表現を使ったif文の評価が上手くいかない | slont_code

slont_code

// 人と知識をつなげるcode

Windowsストアアプリで加速度,地磁気センサのデータをゲットして,それをjavaのプログラムにsocket通信で渡すというプログラムを書いていたんですが,どうしても1割くらいの確率で,データが欠損してしまう.例えば

Azimuth:133.9:x:0.109:y:-0.168:z:-0.958

こういう文字列を送ると

9:y:-0.168:z:-0.958

こうなって来ることがある.
よくわからないから,if文に正規表現を使って欠損データを除外しようと思って,以下のように書いてみた.

String inputLine = br.readLine();
String comp = "Azimuth:\\d{1,3}.\\d:x:-?\\d.\\d{1,3}:y:-?\\d.\\d{1,3}:z:-?\\d.\\d{1,3}";
if(inputLine.equals(comp)) {
  中略
}

しかし,正しいデータが来てるのにどうしても真にならない.
小一時間色々試して悩んでいたら,以下のサイトを見つけた.
 正規表現の利用方法
するとなんだかよくわからんが,PatternとMatcherを使うといいらしい…
とりあえず書き直してみる.

String inputLine = br.readLine();
String comp = "Azimuth:\\d{1,3}.\\d:x:-?\\d.\\d{1,3}:y:-?\\d.\\d{1,3}:z:-?\\d.\\d{1,3}";
Pattern p = Pattern.compile(comp);
Matcher m = p.matcher(inputLine);

if(m.find()) {
  中略
}

なんとかこれで通りました(笑)
なんで直接比較したらダメなんだろ??