Я хотел бы создать регулярное выражение для форматирования текста, в котором не может быть символа {
, кроме случаев, когда он идет с backsla sh \
позади. Проблема в том, что backsla sh может ускользнуть от себя, поэтому я не хочу, например, совпадать с \\{
, но мне нужен \\\{
. Поэтому мне нужно только нечетное количество обратных косых черт перед {
. Я не могу просто взять его в группу и найти количество обратных косых черт после следующего, например:
s = r"a wei\\\{rd thing\\\\\{"
matchs = re.finditer(r"([^\{]|(\\+)\{)+", s)
for match in matchs:
if len(match.group(2)) / 2 == len(match.group(2)) // 2: # check if it's even
continue
do_some_things()
Поскольку группа 2 может использоваться более одного раза, поэтому я могу получить доступ только к последнее (в данном случае \\\\\
) Было бы очень хорошо, если бы мы могли просто сделать что-то вроде "([^\{]|(\\+)(?if len(\2) / 2 == len(\2) // 2)\{)+"
как регулярное выражение, но, насколько я знаю, это невозможно. Как тогда сделать ???