Экранирование одиночной обратной косой черты с двумя

#java #regex #string

#java #регулярное выражение #строка

Вопрос:

У меня есть следующая строка, и я хочу экранировать обратную косую черту только в двойных кавычках. Я пытался сделать это,

 String s = "Hellona = a.split("n")";
String tem = s.replaceAll("(?<=")[^\\](?=")", "\\");
  

Но я получаю следующий вывод,

 # output
Hello
a = a.split("")
  

Я хочу, чтобы это было,

 Hello
a = a.split("n")
  

Есть идеи по этому поводу?

Комментарии:

1. Не говорю, что это невозможно, но, как правило, регулярное выражение не является подходящим инструментом для синтаксического анализа кода.

Ответ №1:

Сделайте это простым:

Предполагая обратную косую черту и двойные кавычки, всегда предшествующие символу n

 public static void main(String[] args) {
    String s = "Hellona = a.split("n")";
    String tem = s.replaceAll("\"\n\"", "\"\\n\"");
    System.out.println(tem);
}
  

Ответ №2:

Как насчет чего-нибудь попроще?

 String s = "Hellona = a.split("n")";
String tem = s.replaceAll("(\)(?=")", "\\");    
  

Вы можете попробовать это здесь
или здесь