Я использую этот код:
static Pattern escaper = Pattern.compile("([^a-zA-z0-9])");
public static String escapeRE(String str) {
return escaper.matcher(str).replaceAll("\\\\$1");
}
Работает красиво, пока я не использую эту строку: "[". Я посмотрел в отладчике результат "]" без "\\".
System.out.println(Main.escapeRE("+"));
System.out.println(Main.escapeRE(">="));
System.out.println(Main.escapeRE("]"));
System.out.println(Main.escapeRE("["));
Результат:
\\+
\\>\\=
]
[
Почему это так?