AGB  ·  Datenschutz  ·  Impressum  







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

natives RegEx (PCRE) für D2009+

Ein Thema von himitsu · begonnen am 11. Feb 2010 · letzter Beitrag vom 10. Okt 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von himitsu
himitsu
Online

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

natives RegEx (PCRE) für D2009+

  Alt 11. Feb 2010, 13:22
Tachchen ihr,

gibt es eigentlich eine einfache, bezahlbare, halbwegs perlkompatible und vorallem unicodefähige Bibliothek für regulärere Ausdrücke?

Bzw. was könnt ihr denn so alles empfehlen?



TPerlRegEx würde zwar nahezu allen Punkten auf diese Beschreibung passen, aber nun das ABER:
- perlkompatibel ist es, daß es die originalen und in Perl verbauten PCREs verwendet
- allerdings muß man dafür immer eine DLL mitliefern.

Bin zwar schon seit 'ner Weile auf Suche, aber hab noch nichts gefunden, welches mir gefällt oder wo überhaupt noch wer dran arbeitet (viele Libs sind schon etwas in die Jahre gekommen).


Nja, bin zwar schon dabei etwas Eigenes zu schreiben (ratet mal, warum ich in lezter Zeit so viel mit kranken Parsern übe und mein Unicode-CharSet so sehr erweitere/überarbeite), aber bis dieses ordentlich läuft, wird es wohl noch 'ne Weile dauern.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#2

Re: natives RegEx (PCRE) für D2009+

  Alt 11. Feb 2010, 13:39
Moin himi,

hast du dir schon einmal den Quelltext der Unit pcre.pas angesehen?

Code:
{$IF COMPILERVERSION >= 21.0}
  // Define PCRE_STATICLINK to link the OBJ files with PCRE 7.9.
  // This works correctly in all cases with Delphi 2010 (and later).
  {$DEFINE PCRE_STATICLINK}
{$ELSE}
  // Delphi 2009 and earlier have a compiler bug that may cause an internal error if install TPerlRegEx
  // into a design time package, and you don't put TPerlRegEx into a runtime package at the same time.
  // With Delphi 2009 and earlier you can use PCRE_STATICLINK if you don't use packages at all
  // (which means you don't install it into the IDE and you don't drop TPerlRegEx on a form)
  // You can also use PCRE_STATICLINK if you put the component into a runtime package

  // Define PCRE_LINKDLL to use pcrelib.dll
  {.$DEFINE PCRE_LINKDLL}
  {$DEFINE PCRE_STATICLINK}
{$IFEND}
Das sollte doch eigentlich ohne DLL gehen, oder?

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

Re: natives RegEx (PCRE) für D2009+

  Alt 11. Feb 2010, 13:55
Nee, das war mir noch nicht aufgefallen.

Die Basis besteht ja aus nur knapp über 30 Dateien und als ich mir das letztens genauer ansah, da gab es nur die Variante mit der DLL.


www.regexguru.com/2008/08/tperlregex-for-delphi-2009
{$IFDEF UNICODE}
type
PCREString = UTF8String;
{$ELSE}
type
PCREString = AnsiString;
{$ENDIF}

The UNICODE directive is defined by default in Delphi 2009, but not in Delphi 2007 or earlier. If you’re using Delphi 2007 or before, TPerlRegEx will work with AnsiString, which has been the default string type since Delphi 2.

When you migrate your application to Delphi 2009, the default string type becomes UnicodeString. PCRE does not support UTF-16. It only supports 8-bit strings (i.e. one byte per character), and UTF-8. Hence my decision to make TPerlRegEx use the new and improved UTF8String in Delphi 2009.

OK, wenn das jetzt geht, dann gibt es ja nur noch den einen Wehrmutstropen, daß es anscheined nicht komplett unicodefähig ist.
Selbst daß die jetzt UTF-8 draus gemacht haben, bedeutet nicht, daß man wirklich mit Unicode arbeiten kann.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
s-off

Registriert seit: 20. Jan 2010
89 Beiträge
 
Delphi 2010 Professional
 
#4

Re: natives RegEx (PCRE) für D2009+

  Alt 11. Feb 2010, 14:38
Du wirst nichts besseres als die TPerlRegEx von Jan Goyvaerts finden. Es ist m.W. nach auch die einzige, auf der PCRE-Lib von P. Hazel basierende und für Delphi verfügbare Komponente - also die einzige wirklich perlkompatible Lösung.

Ich habe immer mal wieder Probleme mit der PCRE_STATICLINK-Direktive (D2007). Mal funktioniert es damit, mal nicht - und ich weiß noch nicht wirklich, woran es liegt - ich habe die Komponente in keine Packages gelinkt...
Gruß
s-off
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

Re: natives RegEx (PCRE) für D2009+

  Alt 11. Feb 2010, 14:58
Wenn jetzt nicht der vollständige PCRE-Befehlsatz unterstützt wird, dann wäre das noch verkraftbar,

Aber wenn man Unicode als UTF-8 durch eine ANSI-Lib jagt, dann kann man als Suchmuster nur den 7-Bit-ASCII-Bereich nutzen.

Ohne Unicode/UTF-8 wäre damit wenigstens noch das komplette 8-Bit-ANSI möglich.


Also, wenn die PCRE-Lib intern wirklich nur mit ANSI arbeitet, dann ist UTF-8 für Unicode absolut keine Lösung und z.B. [äöü] könnte man damit vergessen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#6

Re: natives RegEx (PCRE) für D2009+

  Alt 11. Feb 2010, 17:33
Zitat von s-off:
Du wirst nichts besseres als die TPerlRegEx von Jan Goyvaerts finden. Es ist m.W. nach auch die einzige, auf der PCRE-Lib von P. Hazel basierende und für Delphi verfügbare Komponente - also die einzige wirklich perlkompatible Lösung.
Es gibt noch: http://www.renatomancuso.com/software/dpcre/dpcre.htm

Allerdings ist das noch für D7 und mit einer "älteren" Version von PCRE, für D2009+ müsste man die string/PChar Aufrufe nach AnsiString/PAnsiChar umwandeln...
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
427 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: natives RegEx (PCRE) für D2009+

  Alt 12. Feb 2010, 05:46
Schon mal DiRegEx angeschaut? Kostet nicht die Welt und hat es bisher bei mir ohne Klagen getan.

Grüße,
Uli
  Mit Zitat antworten Zitat
s-off

Registriert seit: 20. Jan 2010
89 Beiträge
 
Delphi 2010 Professional
 
#8

Re: natives RegEx (PCRE) für D2009+

  Alt 12. Feb 2010, 07:43
Zitat von mirage228:
Zitat von s-off:
Du wirst nichts besseres als die TPerlRegEx von Jan Goyvaerts finden. Es ist m.W. nach auch die einzige, auf der PCRE-Lib von P. Hazel basierende und für Delphi verfügbare Komponente - also die einzige wirklich perlkompatible Lösung.
Es gibt noch: http://www.renatomancuso.com/software/dpcre/dpcre.htm

Allerdings ist das noch für D7 und mit einer "älteren" Version von PCRE, für D2009+ müsste man die string/PChar Aufrufe nach AnsiString/PAnsiChar umwandeln...
Die Komponente hatte ich früher mal im Einsatz. Da daran aber schon seit mehr als zwei Jahren nichts mehr getan worden ist, ist sie aus meiner Sicht für diesen Thread irrelevant.

Zitat von ULIK:
Schon mal DiRegEx angeschaut? Kostet nicht die Welt und hat es bisher bei mir ohne Klagen getan.
Die Komponente kenne ich noch gar nicht. Der Preis scheint erstmal ok. Ich frage mich nur, welche Einschränkungen man in Kauf nehmen muss.
Zitat:
DIRegEx is a library of Delphi components and procedures that implement regular expression pattern matching using the same syntax and semantics as Perl 5.10, with just a few differences.
Man achte auf den letzten Teil. Oftmals sind es die Kleinigkeiten, die man schmerzlich vermisst

Wie dem auch sei; solltest Du, himitsu, die Komponente testen, so würde ich mich über einen Erfahrungsbericht sehr freuen
Gruß
s-off
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

Re: natives RegEx (PCRE) für D2009+

  Alt 12. Feb 2010, 08:09
Bekommt man eigentlich die Quellcodes zu deren Units, wenn man es kauft,
bzw. was passiert, wenn die mal nicht weiterentwickeln?

OK, auch hier muß man selbst erstmal das Suchpattern auf UFT8 umstellen, aber wenigstens sucht der intern anscheinend "teilweise" richtig.

Auch hier kommt es mal vor, daß Unicodezeichen zerstört werden, da sie intern nicht als UTF-8, sondern ihre UTF-8-Bestandteile jeweils als einzelzeichen angesehn werden.

Zum Glück liefern die ihre eigenes UTFDecode mit, da man sonst mit den Ergebnissen manchmal garnichts anfangen könnte.
Denn das von Delphi reagiert bei "ungültigem" UTF-8 ja sehr rabiat.


Zitat:
Die Komponente kenne ich noch gar nicht. Der Preis scheint erstmal ok. Ich frage mich nur, welche Einschränkungen man in Kauf nehmen muss.
Bei der Testversion poppt alle paar Minuten innerhalb der IDE ein Fenster auf > vonwegen unregistrierte Version (ob das im Compilat dann auch passiert ... k.A., hab nicht so lange gewartet)

Das Setup ist istgendwie ... nja.
eigentlich nur eine selbstentpackende EXE und die Komponenten installieren, samt Suchpfade einrichten darf man selber machen.

Für Unicode gibt es hier allerdings, so wie bei den Anderen auch, gewisse Einschränkungen, da sie dieses auch nur als UTF-8 durch einen ANSI-Code jagen.

'{ein unicodezeichen}' > '{mehrere utf8-zeichen}' > Maske '\w' oder '.' liefert aber nur das erste UTF8-Zeichen und nicht alle Zusammengehörenden ... also nach der UTF-8-Dekodierung zurück nach Unicode, kommt nur noch Schrott raus.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
s-off

Registriert seit: 20. Jan 2010
89 Beiträge
 
Delphi 2010 Professional
 
#10

Re: natives RegEx (PCRE) für D2009+

  Alt 12. Feb 2010, 08:17
Zitat von himitsu:
Bekommt man eigentlich die Quellcodes zu deren Units, wenn man es kauft [...]


Edit: mit Einschränkungen bezog ich mich auf den Satz
Zitat:
[...] using the same syntax and semantics as Perl 5.10, with just a few differences
Nutzt die gleiche Syntax wie Perl, mit einigen Einschränkungen...

Die Featurelist sieht auf jeden Fall okay aus.
Gruß
s-off
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:33 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