Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   FreePascal (https://www.delphipraxis.net/74-freepascal/)
-   -   FreePascal Reguläre Ausdrücke Wort auschließen mit RegExp Studio (https://www.delphipraxis.net/174607-regulaere-ausdruecke-wort-auschliessen-mit-regexp-studio.html)

Ginko 1. Mai 2013 13:16


Reguläre Ausdrücke Wort auschließen mit RegExp Studio
 
Hallo, es gelingt mir nicht mit RegExp Studio http://regexpstudio.com/DE/TRegExpr/...xp_Syntax.html ein Wort beim Lesen eines Strings auszuschließen.

Im Internet habe ich folgendes Pattern gefunden:
Code:
\b(?:(?!(?>\bAusname1\b|\bAusname2\b))[a-z])+\b
Es soll alle Wörter aus einem Text übernehmen bis auf "Ausname1" und "Ausname2".
Allerdings bringt mir der Compiler (Lazarus) immer einen Fehler. (TRegExpr(comp): Unrecognized Modifier (pos 36))
Die Syntax scheint nicht mit dem RegExp Studio kompatibel. Beim Umschreiben hatte ich noch keinen Erfolg.

Hier noch der Aufruf:
Delphi-Quellcode:
uses ... RegExpr ...
.
.
.
procedure TForm1.Button1Click(Sender: TObject);
var
  RegexObj : TRegExpr;
  Text, Str1: String;
begin
  try
    Text:= memo1.Text;
    RegexObj:= TRegExpr.Create;
    RegexObj.Expression:= '\b(?:(?!(?>\bAusnahme1\b|\bAusnahme2\b))[a-z])+\b';
    Str1:= '';
    if RegexObj.Exec(Text) then
    begin
      repeat //alle gefundenen Ausdrücke in String speichern
        Str1 := Str1 + RegexObj.Match[0];
      until not RegexObj.ExecNext;

      Memo2.Text:= Str1;
    end;
  finally
    RegexObj.Free;
  end;
end;

Oder bei hier dem Beispiel kommt TRegExpr(comp): Unrecognized Modifier (pos 11):
Code:
\bF(?!eta\b).*\b
trifft auf alle Wörter, die mit "F" anfangen, aber ungleich "Feta" sind.

JamesTKirk 1. Mai 2013 19:34

AW: Reguläre Ausdrücke Wort auschließen mit RegExp Studio
 
Zitat:

Zitat von Ginko (Beitrag 1213670)
Hallo, es gelingt mir nicht mit RegExp Studio http://regexpstudio.com/DE/TRegExpr/...xp_Syntax.html ein Wort beim Lesen eines Strings auszuschließen.

Ich glaub TRegExpr unterstützt das einfach nicht (zumindest nicht nach dem was die Syntax sagt). Da bist du glaub ich besser beraten zu überprüfen, ob dein Match der Ausnahme entspricht (so kannst du zum Beispiel leichter steuern, ob Fetakäse (um das Feta-Beispiel zu verwenden) jetzt ausgenommen werden soll oder nicht.

Gruß,
Sven

Ginko 1. Mai 2013 19:53

AW: Reguläre Ausdrücke Wort auschließen mit RegExp Studio
 
Hey, danke für die Antwort !
Gibt es noch eine andere Unit für Lazarus mit Regulären Ausdrücken, die die Syntax unterstüzt ?
Ich glaube ich verwende doch lieber ein modifiziertes StringReplace dafür, ist wahrscheinlich viel schneller und kostet nicht so viel Nerven...


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:42 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