Ответ 1
Я понял это
String test = "select * from blah *asdf";
test = test.replaceAll("\\*", "\\\\*");
System.out.println(test);
В Java я хочу заменить все символы *
на \*
.
Пример:
Текст: select * from blah
Результат: select \\* from blah
public static void main(String[] args) {
String test = "select * from blah";
test = test.replaceAll("*", "\\*");
System.out.println(test);
}
Это не работает и не добавляет обратную косую черту.
Я понял это
String test = "select * from blah *asdf";
test = test.replaceAll("\\*", "\\\\*");
System.out.println(test);
Для этого вам не нужны никакие функции регулярного выражения, поэтому вы должны использовать версию non-regex String.replace(CharSequence, CharSequence)
String test = "select * from blah *asdf";
test = test.replace("*", "\\*");
System.out.println(test);
Для тех из вас, кто держит счет дома, а так как понимание ответа может быть полезным для кого-то другого...
String test = "select * from blah *asdf";
test = test.replaceAll("\\*", "\\\\*");
System.out.println(test);
работает, потому что вам нужно избежать специального символа *
, чтобы сделать регулярное выражение счастливым. Тем не менее, \
является специальным символом в строке Java, поэтому при создании этого регулярного выражения в Java вы также должны избегать \
, следовательно \\*
.
Это часто приводит к тому, что равно двойным экранам при объединении регулярных выражений в строках Java.