Как удвоить двойную кавычку?

1

Скажем, у меня есть эта строка в java:

This a "text". This is inches 30". And another 20\"

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

Поэтому после изменения строка будет выглядеть так: напечатано в консоли:

This is a "text". This is inches 30\". And another 20\"

Поэтому регулярное выражение должно проверять, есть ли число перед двойной кавычкой, и если уже нет escape-символа...

благодарю!!

  • 0
    Там не будет \ после 30 .
  • 0
    Будьте осторожны с этим. Вам не нужно экранировать "в строке, просто в строковую константу, которую вы вводите в программе. Мне не имеет смысла, что вы хотите \ цитировать что-либо в строке, которая уже есть в переменной.
Показать ещё 2 комментария
Теги:
replaceall

2 ответа

2
Лучший ответ

Попробуйте с Positive Lookbehind

String str="This a \"text\". This is inches 30\". And another 20\\\"";
System.out.println(str.replaceAll("(?<=\\d)\"", "\\\\\""));

вывод:

This a "text". This is inches 30\". And another 20\"

Вот демонстрация онлайн.

Объяснение шаблона:

  (?<=                     look behind to see if there is:
    \d                       digits (0-9)
  )                        end of look-behind
  \"                       '"'
0
         x='This a "text". This is inches 30". And another 20\"'
         print re.sub(r"(\d+)(\")",r"\1\\\2",x)

Это в python. Я не знаю точное соответствие для java.

  • 0
    Или просто (\ d) "-> \ 1 \\"
  • 0
    нет, это было бы неправильно. Потому что, если он уже сбежал, мы не хотим делать это снова. / 20 -> получится // 20.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню