I use this code:
static Pattern escaper = Pattern.compile("([^a-zA-z0-9])");
public static String escapeRE(String str) {
return escaper.matcher(str).replaceAll("\\\\$1");
}
It works pretty, until I don't use this string: "[". I looked in the debuger the result is "]" without "\\".
System.out.println(Main.escapeRE("+"));
System.out.println(Main.escapeRE(">="));
System.out.println(Main.escapeRE("]"));
System.out.println(Main.escapeRE("["));
Result:
\\+
\\>\\=
]
[
Why it is so?