日記 (2016 年 6 月 6 日)
Java の正規表現で最近ハマったことがあったのでメモ代わりに書いておきます。
正規表現ではドットは任意の 1 文字とマッチしますが、 行末記号 (改行文字) とはマッチしません。
では改行文字にもマッチさせたい場合はどうするかというと、 オプションで設定できます。
このオプションなんですが、 私が普段メインで使っている Ruby では m なので、 /a(.*)a/m みたいに (/(?m)a(.*)a/ でも良い) 書いてました。
一方、 Java では、 これに相当するオプションは m ではなく s になっているので、 "(?s)a(.*)a" と書く必要があります。
ずっと m を指定していて正常にマッチせずに 20 分くらい迷宮入りしてました。