Для тех из вас, кто ведет счет дома, и поскольку понимание ответа может быть полезным для кого-то еще ...
String test = "select * from blah *asdf";
test = test.replaceAll("\\*", "\\\\*");
System.out.println(test);
работает, потому что вы должны экранировать специальный символ *
, чтобы сделатьрегулярное выражение счастья.Однако \
- это специальный символ в строке Java, поэтому при построении этого регулярного выражения в Java вы также должны экранировать \
, следовательно, \\*
.
Это часто приводит к тому, что удваивается-escapes при объединении регулярных выражений в строках Java.