AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ePCRE (himi's TRegEx)

Ein Thema von himitsu · begonnen am 23. Feb 2010 · letzter Beitrag vom 13. Apr 2010
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.233 Beiträge
 
Delphi 12 Athens
 
#1

ePCRE (himi's TRegEx)

  Alt 23. Feb 2010, 15:01
Also erstmal:
Es handelt sich hierbei noch nicht um einen funktionierenden Code!
Der Code wird nur für Delphi 2009 und neuer entwickelt
und er landet dann vermutlich irgendwann mal in der OpenSource-Abteilung.

Für ein Projekt hatte ich ein paar "Extrawünsche" und versuchte diese mit vorhandenen RegEx-Funktionen/Klassen umzusetzen, welches nicht bei allen Punkten so richtig klappen wollte.
z.B. siehe http://www.delphipraxis.net/internal...t.php?t=173434

Nun ja, wegen einiger anderer Probleme hatte ich dann einige Codeteile nochmals neu machen oder entfernen "müssen",
so daß es jetzt wieder etwas leerer aussieht, als es mal der Stand war.
z.B. http://www.delphipraxis.net/internal...t.php?t=173678

Aktuell existiert praktisch nur der Anfang des Parsers und die interne Struktur des "Patterns", sowie des Results.

Der Rückgabewert steht je nach Funktion als String-Array, StringList oder in einer änlichen Form, wie es in PHP der Fall ist, zur Verfügung (also wenn es dann mal läuft).

Aktuell gibt es auch nur eine reine Unicode-Schnittstelle (wobei es für den Suchtext und eventuell auch das Pattern mal Ansi geben soll).


Sooooooo, warum ich das jetzt hier schreibe ist,
ich möchte schon frühzeitig Probleme erkannt haben, bevor dann nochmal "viel" geändert werden muß.

Darum:

Hat jemand an der Schnittstelle in der RegEx.pas was auszusetzen?


Und dann hab ich gerade mal versucht die unterstützte Syntax irgendwie zusammenzustellen (siehe RegEx.txt).
Alles ab dem ersten ********** kann ignoriert werden und die Verteilung der Unicode/Ansi-Zeichenklassen ist noch nicht entgültig.
Sieht da jemand einen "Fehler" oder etwas Fehlendes in meiner RegExpr-Syntax?

Die RegEx.txt besser in der Delphi-IDE öffnen, da ich mir aktuell den Text über ein paar Unicodezeichen formatiert hab, welche z.B. im Notepad nicht gut unterscheidbar sind.

Ansonsten kann ich nur noch erwähnen, daß der Code komplett in Pascal geschrieben ist/wird und demnach keine externen Voraussetzungen hat (nur noch mein DynCharSet wird noch als Zusatz benötigt)

Das Suchmuster (Pattern) wird in einem binären Baum zerlegt und etwas optimiert, um dann schneller/einfacher suchen und vergleichen zu können.



Mein aktueller Testcode ist auch noch recht übersichtlich (er hat ja auch noch nicht viel zu machen).
Delphi-Quellcode:
Program Project1;

{$APPTYPE CONSOLE}

Uses SysUtils, RegEx, Dialogs;

Var RE: TRegEx;

Begin
  Try
    RE := TRegEx.Create;
    RE.Expression := '#(abc.[a-z])#i';
    WriteLn(RE.Expression);
    WriteLn(RE.ExprAssemble);
    RE.Free;

    If TRegEx.Match('(abc.[a-z])', 'xyz') Then
      WriteLn('TRUE');

    ReadLn;
  Except
    On E:Exception do Begin
      WriteLn(E.ClassName, ': ', E.Message);
      WriteLn('wait 30 seconds ...');
      Sleep(30000);
    End;
  End;
End.
Angehängte Dateien
Dateityp: txt regex_132.txt (23,5 KB, 10x aufgerufen)
Dateityp: pas regex_194.pas (76,8 KB, 12x aufgerufen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz