Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Regex: Frage zur abfrage (https://www.delphipraxis.net/146114-regex-frage-zur-abfrage.html)

Chefx 19. Jan 2010 20:04

Re: Regex: Frage zur abfrage
 
ich glaub es liegt entweder an der Komponente oder mein Code hat einen hacken :gruebel:
(hab noch ein paar tage zeit bekommen :-D )
Delphi-Quellcode:
var
  code: array of string;
  regexMachine: TPerlRegEx;
begin
  SetLength(code, 0); //Array initialisieren
  SetLength(pos, 0);  //
  regexMachine := TPerlRegEx.Create(nil);
  try
    regexMachine.RegEx := '[A-Za-z0-9äöüÄÖÜß]*[A-Za-zäöüÄÖÜß]+[A-Za-z0-9äöüÄÖÜß]*'; // mit dem [\p{N}_]*[\p{L}_]+[\p{N}_]* hab ich es auch versucht hat auch nicht funktioniert
    regexMachine.Subject := 'hallo was machst du';
    regexMachine.Options := regexMachine.Options + [preUnGreedy];

    if regexMachine.Match then
    begin
      repeat
        setlength(code, Length(code) + 1);// Treffer um neu gefundenen erweitern
        code[Length(code) - 1] := regexMachine.MatchedExpression;// Neue Treffer in das code Array eintragen
      until not regexMachine.MatchAgain; // und weitersuchen. Abbruch, wenn kein Treffer mehr
    end;
    memo1.Lines.add(code[0]);
  finally
    regexMachine.free;
  end;
vielleicht ist hier der Fehler?

MarioM. 19. Jan 2010 20:54

Re: Regex: Frage zur abfrage
 
Kann den Code hier nicht testen, da ich die Komponente hier nicht installiert habe.
Oben wurde gesagt, dass alle Wörter matchen, da die RegEx gierig ist, und somit alles frisst, was sie finden kann.

In diesem Zusammenhang sieht mir folgendes etwas merkwürdig aus:
Delphi-Quellcode:
regexMachine.Options := regexMachine.Options + [preUnGreedy];
Desweiteren meine ich, mich erinnern zu können, dass die Matches mit
Delphi-Quellcode:
regexMachine.SubExpressions[...]
abgefragt werden.

Chefx 19. Jan 2010 21:06

Re: Regex: Frage zur abfrage
 
[quote="MarioM."]
In diesem Zusammenhang sieht mir folgendes etwas merkwürdig aus:
Delphi-Quellcode:
regexMachine.Options := regexMachine.Options + [preUnGreedy];
Was soll ich deiner Meinung nach machen?
Wenn du das meinst:
Delphi-Quellcode:
regexMachine.Options :=[preUnGreedy];
verändert es sich auch leider nicht.

Das mit regexMachine.SubExpressions[...] hatte ich auch schon.

Was nimmst du für eine Kompo?

Khabarakh 19. Jan 2010 22:13

Re: Regex: Frage zur abfrage
 
Zitat:

Zitat von Chefx
Was soll ich deiner Meinung nach machen?

Ganz weglassen? Oder war irgendetwas an unseren Beiträgen, dass es mit einem greedy Regex funktioniert, nicht verständlich :wall: ?

MarioM. 20. Jan 2010 06:57

Re: Regex: Frage zur abfrage
 
Zitat:

Zitat von Chefx
Was soll ich deiner Meinung nach machen?

Wenn Du häufiger mit Regulären Ausdrücken arbeitest, solltest Du Dir geeignete Literatur anschaffen.

Desweiteren kann es nicht schaden, wenn Du Dir ein kleines Tool zulegst, mit dem Du Deine RegEx testen und debuggen kannst. Da Du die PerlRegEx-Komponente einsetzt, liegt es nahe, Dein Taschengeld in den RegExBuddy zu investieren. Der ist vom gleichen Autor wie die von Dir genutzte Komponente, und Du kannst damit verschiedene Engines testen. Schau Dir das Ganze auf der Homepage einfach mal an.

Chefx 20. Jan 2010 16:03

Re: Regex: Frage zur abfrage
 
Zitat:

Zitat von Khabarakh
Oder war irgendetwas an unseren Beiträgen, dass es mit einem greedy Regex funktioniert, nicht verständlich :wall: ?

Sorry, ich war noch nicht so bewandert in diesen Thema (ich wusste nicht was du unter greedy meinst).

Ich werde mir die Links mal anschauen (ein Buch darüber ist bestimmt nicht verkehrt :mrgreen: ).

Danke für eure ganzen Antworten :thumb: :thumb:

MfG
Chefx

s-off 20. Jan 2010 18:59

Re: Regex: Frage zur abfrage
 
Hallo,

Zitat:

Zitat von Chefx
ein Buch darüber ist bestimmt nicht verkehrt

Ein Buch? Das ist nicht ein Buch - es ist das Buch - die Bibel der Regulären Ausdrücke :zwinker:
Nee, mal im Ernst; 'Der Friedl' - oder auch das 'Eulenbuch' genannt, ist das Standardwerk, wenn es um RegEx geht.
Und man lernt beim Lesen nicht nur etwas über die Regulären Ausdrücke, sondern auch noch ein bissel Perl, was dem ein oder anderen vielleicht Lust auf mehr macht.

Begleitend dazu würde ich noch diese kleine Referenz empfehlen, die man gut auf dem Schreibtisch liegen haben kann.
Und natürlich das Tool, das Mario oben schon empfohlen hat. Die Programme von JG-Soft sind, was Reguläre Ausdrücke betrifft, wirklich genial - besonders auch PowerGREP, was auf den ersten Blick recht teuer erscheint, aber für mich bisher jeden Cent wert war!


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:37 Uhr.
Seite 3 von 3     123   

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