re.sub(r'(?<=foo: ")[^"]+(?=")', 'pears', s)
Регулярное выражение соответствует последовательности символов, которая
- следует за строкой
foo: "
, - , не содержит двойных кавычек и
- сопровождается
"
(?<=)
и (?=)
lookbehind и lookahead
Это регулярное выражение завершится ошибкой, если значение foo
содержитсбежавшие цитаты.Используйте следующий, чтобы поймать их тоже:
re.sub(r'(?<=foo: ")(\\"|[^"])+(?=")', 'pears', s)
Пример кода
>>> s = 'foo: "apples \\\"and\\\" more apples", bar: "oranges"'
>>> print s
foo: "apples \"and\" more apples", bar: "oranges"
>>> print re.sub(r'(?<=foo: ")(\\"|[^"])+(?=")', 'pears', s)
foo: "pears", bar: "oranges"