Javaの正規表現でドットを改行にマッチさせる
Javaの正規表現において、ドット(.)を改行文字にもマッチさせるにはどうすればいいか。APIドキュメントが分かりにくくてしばし戸惑ったので解決策をメモしておく。
方法1:Pattern.compile時に指定
Pattern.compile("今週のランキング:(.*?)総評", Pattern.DOTALL);
方法2:インラインで指定
Pattern.compile("今週のランキング:((?s).*?)総評");
これがドキュメントにある「埋め込みフラグ」の使い方らしい。ちなみにドットの場合は目的のドットの直前にフラグを書けばいいようだが、他のフラグをどこに書けばいいのかは説明されていない。僕の読み方が甘いのかもしれないが、これぐらい甘い読み方でも理解できるようにドキュメントは書いてほしいものだ。