@WladiD:
Ein auf eine geöffnete Klammer folgendes Fragezeichen markiert den Beginn eines Subpatterns und ist gültige PCRE-Syntax. Die geschweiften Klammern sollte man allerdings besser escapen.
Abgesehen davon sollte ein selbstgeschriebener Parser eigentlich immer schneller sein als Regex, zumindest in einer kompilierenden Sprache wie Delphi.
@liftoff:
Hatte ich mit Greedy/Non-Greedy wohl doch den richtigen Riecher
Geht der String denn nach dem
-}
noch weiter? Denn die Sub-Expression
[^\r\n]*\r\n
matcht ja auch auf Anfang und Ende eines solchen Konstrukts, d.h. die Engine geht
immer erst mal bis zum Ende des Strings, weil ja immer noch ein
-}
folgen könnte; erst am Ende merkt sie dann, dass dort keines ist, und geht schrittweise zurück. Das könnte also, gerade in Kombination mit Sub-Patterns, die vielleicht rekursiv implementiert sind, die Ursache für den Überlauf sein.