Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi RegEx unter Delphi (https://www.delphipraxis.net/74828-regex-unter-delphi.html)

BaedDog 9. Aug 2006 11:32


RegEx unter Delphi
 
Hi,

so langsam bin ich am verzweifeln. Schon seit Tagen such ich eine Delphi Modul womit ich Reguläre Ausdrücke unter Delphi 7 verwenden kann. Jetzt hab ich eins gefunden (TPerlRegEx), allerdings finde ich nirgends Code Beispiele oder sonstige Tutorials. Ich hoffe hier im Forum hat schon jemand Erfahrungen damit gesammelt.

Mein Problem ist folgendes. Das ersetzen klappt wunderbar, nur leider ersetzt er immer nur den ersten String, den er findet.

Delphi-Quellcode:
function regExReplace(ARegEx, AReplace, AText: String): String;
begin
  with TPerlRegEx.Create(nil) do
  begin    
    RegEx        := ARegEx;
    Subject      := AText;
    Options      := [preCaseLess,preSingleLine];
    Replacement  := AReplace;

    if (Match() = TRUE) then
      Replace;

    result := Subject;

    Free();
  end;
end;

procedure test;
begin
  regExReplace('e', 'i', 'Das ist ein Beispiel Text');
end;
Hat jemand 'ne Idee wodran das liegen könnte?

MfG
BaedDog

EDIT:
Bitte ins richtige Forum verschieben, hat er eben falsch erstellt :/

chaosben 9. Aug 2006 11:38

Re: RegEx unter Delphi
 
Zitat:

Zitat von BaedDog
so langsam bin ich am verzweifeln. Schon seit Tagen such ich eine Delphi Modul womit ich Reguläre Ausdrücke unter Delphi 7 verwenden kann.

Das hier kann ich sehr empfehlen.

BaedDog 9. Aug 2006 11:47

Re: RegEx unter Delphi
 
Das hatte ich vorher schonmal probiert, allerdings wird dort das (?:...), sprich das nicht zwischenspeichern von Gruppierung als Subpattern unterstützt.

BaedDog 9. Aug 2006 14:32

Re: RegEx unter Delphi
 
Hab das jetzt selbst hinbekommen, muste das in einer Schleife ersetzen lassen, also hier der richtige Code:
Delphi-Quellcode:
function regExReplace(ARegEx, AReplace, AText: String): String;
begin
  with TPerlRegEx.Create(nil) do
  begin
    RegEx        := ARegEx;
    Subject      := AText;
    Options      := [preCaseLess,preSingleLine];
    Replacement  := AReplace;

    if (Match() = TRUE) then
    repeat
      Replace;
    until not MatchAgain();

    result := Subject;
    Free();
  end;

Phistev 9. Aug 2006 14:52

Re: RegEx unter Delphi
 
wie wär's mit
Delphi-Quellcode:
function ReplaceAll: Boolean;
?

BaedDog 9. Aug 2006 14:58

Re: RegEx unter Delphi
 
Ne, dann ersetzt er den Kram falsch. kA wieso.
Auf jeden Fall ist replaceAll was anderes als meine Lösung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz