Hi pr0g,
Danke fürs Fehlersuchen.
Also der Fehler mit den define()s ist ja äußerst seltsam, sollte aber relativ einfach zu beheben sein - hoffe ich *g*.
Bei dem Include in der letzten Zeile habe ich lediglich vergessen einmal zu prüfen, ob der String länger ist als 0 Zeichen bevor ich versuche auf ein Zeichen zuzugreifen.
Aber der letzte Fehler hats wohl in sich. Man kann ihn, soweit ich das sehe, einfach durch das Hinzufügen einer Word Boundary (\b) Assertion nach dem "(?<!\$)" beheben, jedoch vergrößerte sich die Parsing-Zeit in meiner Testdatei (ca. 750 KB) von 2,7 Sek auf 3,3 Sek, was ich nicht besonders schön finde. Ich versuche das Problem noch anders in den Griff zu kriegen, aber wenns nicht anders geht, werde ich das wohl so mit dem \b machen.
Edit: Hab doch noch ne sehr einfache Lösung gefunden. Die Assertion (?<!\$) muss nur so angepasst werden, dass weder ein Alphanummerisches Zeichen, ein Unterstrich, noch ein $ oder ein sonstiges
ASCII Zeichen, das einem Variablenbezeichner entsprechen kann, vor dem Match ist. Also einfach: (?<![\$\w\x7f-\xff])
In meinen Versuchen klappt das bisher sehr gut, also denke ich, mache ich das so. Bei dieser Variante gibts auch keine spürbaren Geschwindigkeitseinbußen
Wenn alles glatt geht, gibts heute eine neue bzw. eine aktualisierte Version.
mfG
mirage228