replaceFirst や、replaceAll を使う時に第一引数の一致させる文字列に正規表現で使う記号などが入っていると上手く置換されない。
エスケープする必要があるが、対象の記号を精査していると大変なので以下のように記号は一括してエスケープする。
1 2 3 4 5 6 |
// [] などが入っていると問題になる String regex = "[abcdefg]"; // 記号は一括してエスケープ regex = regex .replaceAll("(\\p{Punct})", "\\\\$1"); |