Напишите это как регулярное выражение, чтобы найти то, что вам не нужно, затем включите это регулярное выражение в отрицательный прогноз нулевой ширины.Приведенное ниже описание использует xxx
для обозначения регулярного выражения, построенного до этой точки.
В конце вы хотите найти \'
: \\'$
Вы хотите включить четное число \
до этого.(?:\\\\)*xxx
Вы не хотите \
до этого: (?<!\\)xxx
Все, что до этого разрешено: .*xxx
Вставить в негативном видезатем сопоставьте что угодно: ^(?!xxx).*$
Убедитесь, что .
соответствует разрывам строк (необязательно): (?s)xxx
Все вместе: (?s)^(?!.*(?<!\\)(?:\\\\)*\\'$).*$
Как литерал Java: "(?s)^(?!.*(?<!\\\\)(?:\\\\\\\\)*\\\\'$).*$"
Демонстрация на regex101.com показывает, что строки, заканчивающиеся нечетным числом \
перед окончательным '
, не выбраны, т.е. недействительны.