Пример, у меня есть следующая строка:
String str = "te\\\"st\""
и я должен найти индекс первого неэкранированного (без \) ". В этом примере правый индекс - 9.
Есть ли какое-либо регулярное выражение или какое-либо другое решение для решения этой проблемы?
У меня есть следующий код
Pattern pattern = Pattern.compile(HERE A REGEX);
Matcher matcher = pattern.matcher(json);
if (matcher.find()) {
System.out.println(matcher.start());
}
но я не знаю, какое регулярное выражение использовать.
Да, извините, я имею в виду String str = "te \\\" st \ "".
Хорошо, в чем проблема с вашим подходом? Обратите внимание, что Pattern pattern = Pattern.compile(HERE A REGEX); не компилируется. Какую схему вы пробовали?
Как только вы что-нибудь придумаете, обновите вопрос, пока это не по теме.




Вы можете попробовать это регулярное выражение, чтобы найти первую неэкранированную цитату,
^[^"\\]*?(?:[\\]{2})*(")
Демо ,,, в котором я намеревался зафиксировать первую неэкранированную цитату для group 1 (\1 или $1).
И чтобы найти index из quote (captured group 1), вам нужно будет получить значение,
matcher.start(1)
Вы хотели использовать
String str = "te\\\"st\""? И это 7-й знак, а не 9-й. Поделитесь нерабочим кодом, чтобы уточнить, с какой проблемой вы столкнулись.