Vielleicht sollte die Frage auch anders lauten. Mein Corpus Delicti ist jedenfalls dieser String:
Das erste Pattern, was ich für diesen Fall genommen habe, sucht nach beliebigen sich wiederholenden Zeichen bis zur jeweils folgenden eckigen Klammer. Es funktioniert auch so, wie ich das erwartet hätte:
Code: Alles auswählen
>>> re.findall(r'(.*?)\[', s)
['foo ', ' bar ', ' baz ']
`spam` wird natürlich nicht gefunden, weil keine Klammer folgt.
Nun zum zweiten Pattern. Suche nach String, der mit eckiger Klammer beginnt und stoppe vor der nächsten Klammer:
Das Suchergebnis ist soweit in Ordnung. Die erste Klammer habe ich bewusst mit reingenommen. Was ich aber nicht verstehe: Warum findet der hier nur ein Ergebnis und hört dann auf? Was macht das zweite Pattern soviel anders als das erste? Ist doch einfach so, dass diesmal ein bestimmtes Zeichen vor dem Platzhalter steht und diese Kombination kommt ja wohl danach auch noch vor, oder nicht? Meine Vermutung wäre höchstens noch, dass es vielleicht was mit greedy und non-greedy zu tun hat, aber so richtig kann ich mir aus der Begründung keinen Reim machen.