re.sub(r'(?<=foo: ")[^"]+(?=")', 'pears', s)
Die Regex entspricht einer Folge von Zeichen, dass
- die Zeichenfolge Folgt
foo: "
,
- enthält keine doppelten Anführungszeichen und
- wird von
"
gefolgt (?<=)
und (?=)
sind lookbehind and lookahead
Diese Regex wird fehlschlagen, wenn der Wert foo
ungültige Quotes enthält. Verwenden Sie das folgende man sie zu fangen:
re.sub(r'(?<=foo: ")(\\"|[^"])+(?=")', 'pears', s)
Beispielcode
>>> 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"
Ihr Muster den gierigen Operator verwendet '*', was bedeutet, es wird die längste Match bekommen es finden kann, was bedeutet, dass in. Ihr Fall wird die Gruppe "Äpfel" sein, Bar: "Orangen". Sie suchen nach '(. *?)' – abyx