Java SE 6の正規表現
Javaのバージョンを5から6へアップさせたら正規表現の処理が変わったのか手元のプログラムが意図した通りに動かなくなった。
具体的に言うとjava.util.Scanner#findInLine(String)で引数のリテラルの冒頭で(?s)を入れてもDOTALLフラグが有効にならないっぽい。
バグなのかなんなのかまだよくわからない。Tigerではこれで動いたんですけどね〜。
追記:
やっぱり同じプログラムなのにJava5とJava6で動きが違う。原因は上述した通り。
ちなみに試してみたそれぞれのJavaのバージョンはこれ
java version "1.5.0_10" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_10-b03) Java HotSpot(TM) Client VM (build 1.5.0_10-b03, mixed mode, sharing) java version "1.6.0" Java(TM) SE Runtime Environment (build 1.6.0-b105) Java HotSpot(TM) Client VM (build 1.6.0-b105, mixed mode, sharing)
困っちゃったな。どうしよう。