Использование Python с необработанными строковыми литералами для гарантии того, что дальнейшая интерпретация escape-последовательностей не выполняется, работает следующий вариант:
import re
x = re.compile(r'^"((?:[^"\\]|\\.)*)"')
s = r'"quote\_with\\escaped\"characters" more"'
mo = x.match(s)
print mo.group()
испускает "quote\_with\\escaped\"characters"
; Я полагаю, что в вашей версии (которая также преждевременно прерывает совпадение, если подставить ее здесь), подвыражение «не двойная кавычка» ([^"]
) поглощает обратные слеши, которые вы намереваетесь использовать как экранирование следующих за ним символов. Все, что я делаю здесь - это гарантирую, что такие обратные слеши НЕ будут проглочены таким образом, и, как я уже сказал, похоже, это работает с этим изменением.