Forum: Object-Pascal / Delphi-Language
Delphi
by mirage228,
18. Mär 2010
Der obige Regex braucht hier nicht mal eine Sekunde (Das Schreiben ins Memo dauert aber ein paar Sekunden):
var
M: IMatchCollection;
N: TStringList;
i: Integer;
begin
N := TStringList.Create;
with TStringList.Create do
try
Forum: Object-Pascal / Delphi-Language
Delphi
by mirage228,
18. Mär 2010
Ich verwende: http://www.renatomancuso.com/software/dpcre/dpcre.htm
Allerdings auf D2010 angepasst (string->AnsiString, PChar->PAnsiChar, PCRE 6.7 Lib pcre.dll - muss der Anwendung beigelegt werden).
Lade mal die Test-Datei (also dort wo die gesuchten Einträge drin sind) hoch, dann kann ich genauere Geschwindigkeitstests machen ...
Viele Grüße
Forum: Object-Pascal / Delphi-Language
Delphi
by mirage228,
18. Mär 2010
So gings mit meiner PCRE library (verwendet auch die pcre.dll, daher sollten die Ergebnisse auch gleich sein):
(\d{1,3}(?>\.)){3}(?>\d{1,3})
Match kam erfolgreich zurück. Sollte so auch relativ schnell sein.
Schau mal, ob das bei dir die richtigen Matches liefert.
Viele Grüße
Forum: Object-Pascal / Delphi-Language
Delphi
by mirage228,
18. Mär 2010
Ich könnte mir vorstellen, dass hier versucht wird Patterns öfter zu matchen: http://de.php.net/manual/de/regexp.reference.onlyonce.php
Versuchs mal so:
(?>\d{1,3})\.(?>\d{1,3})\.(?>\d{1,3})\.(?>\d{1,3})
oder du versuchst es mit Assertions:
(\d{1,3}(?=\.)){3}\d{1,3}