Forum: Algorithmen, Datenstrukturen und Klassendesign
by liftoff,
14. Jun 2012
Also einen Bug habe ich auch nie vermutet.:wink:
Eingangs wollte ich nur die Stackbehandlung in pcre allgemein und an diesem Punkt jetzt die unterschiedliche Stackbehandlung von greedy- und nongreedy Ausdrücken ein wenig besser verstehen. Wenn nongreedy sich bei gleichem Matchergebnis ressourcenschonender verhält, wäre das ja auch mal eine wichtige Erkenntnis. :)
Forum: Algorithmen, Datenstrukturen und Klassendesign
by liftoff,
14. Jun 2012
Nene. Stack und Heap, hab ich lieb. Damit kenne ich mich schon aus. 8-)
Nur den Zusammenhang zwischen greedy und lazy im Zusammenhang mit dem PCRE-Stack hab ich nicht verstanden.
Hier ein glaube ich altes Beispiel.
banane
b(an)+ liefert 'banan'
Forum: Algorithmen, Datenstrukturen und Klassendesign
by liftoff,
13. Jun 2012
Wow. Danke fur die ausführliche Untersuchung.:)
Ich möchte, dass sich das nur matcht, wenn die unter #11 beschriebenen Kriterien zutreffen.
Also nach {4: ein Umbruch, danach Zeilen mit Egal plus Umbruch und danach eine letzte Zeile mit einem -} am Anfang.
So ganz habe ich aber in der Tat den Zusammenhang mit dem Stack noch nicht ergründen können.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by liftoff,
13. Jun 2012
Ja, gutes Näschen. :wink:
Es folgt am Anfang der letzten Zeile immer ein '-}'
Eine Swiftnachricht besteht aus mehreren Blöcken.
{1:...}{2:...}{3:...}{4:
Nachrichteinhalt
-}{5:}
Der Block 4 (Textblock) muss immer mit '{4:'+Zeilenumbruch anfangen und mit Zeilenumbruch+'-}' enden.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by liftoff,
13. Jun 2012
Der reguläre Ausdruck hat schon viele fehlerfreie Jahre auf dem Buckel. :P
Macht halt eben Mucken nach der Portierung von 2007 nach XE.
Also mit geschweiften Klammern hatte ich in pcre noch nie Probleme. Nur wenn daraus tatsächlich eine Quantifizierung entsteht. Dann ist ein \ angesagt. Werde den Einwand aber auf jeden Fall mal im Hinterkopf behalten.
Noch ein Frage zu dem *? (was...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by liftoff,
13. Jun 2012
Vielen Dank für die bisherigen Anworten.
Einen eigenen Parser zu schreiben, wäre hier viel zu aufwändig. Das Ganze ist ja bereits ein Parser für Swiftnachrichten auf der Basis von regulären Ausdrücken. In der Tat ist TPerlRegEx ungefähr halb so schnell, wie mein alter Wrapper. Insgesamt ist die Performance aber zufriedenstellend. :)
Hier dann mal ein Beispielcode:
var re : TPerlRegEx;
...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by liftoff,
12. Jun 2012
Bin gerade nicht im Büro :wink:. Auf jeden Fall ist es keine Starter Edition.
Ich habe mir einen Wrapper für den Wrapper geschrieben, damit ich die Orginalsourcen meiner Bibliothek (etwa 15000 Codezeilen) nicht anfassen muss. Diese arbeitet weiterhin mit string, der ja UTF16-codiert ist. Problem war nur die Umwandlung der Matchpositionen von UTF8 nach UTF16. Ein €-Zeichen hat beispielsweise 3...