Javaの正規表現でエスケープ

Java正規表現はエスケープする時にちょっと特殊なのでメモ。
正規表現特殊文字をエスケープするには「¥」を使います。
たとえば「penta.」を「penta!!」に置換しようとた場合viなら「s/\./!!/」と書きます。が、Javaで同じように

"penta.".replaceAll("\.","!!"); 

とするとコンパイルエラーになります。これは「¥.」なんて文字ねーよとコンパイラが怒ってるから。なので

"penta.".replaceAll("\\.","!!"); 

と「\\」ってしてあげないと駄目。リテラルとしてのエスケープ+正規表現のエスケープで2回エスケープしてあげないとってこと。

「String.replace」は正規表現じゃないけど「String..replaceAll」と「String.replaceFirst」は内部が正規表現で比較されるので気をつけましょう。