Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi HTML Datei und RegEX Parser (https://www.delphipraxis.net/87382-html-datei-und-regex-parser.html)

sexmagic 27. Feb 2007 21:02


HTML Datei und RegEX Parser
 
Hallo Leute,

das Delphifieber hat mich wieder gepackt und ich versuche mich wieder einzuarbeiten.

Leider hänge ich an einem Problem fest das ich einfach nicht gelöst bekomme.

Vorhaben:
Ich habe eine HTML Datei und möchte diese auslesen und in ein MEMO Schreiben, das funktioniert auch, anschliessend entferne ich erstmal alle Zeilenumbrüche.
Nun möchte ich alle Inhalte zwischen valign="top"> und </td> in ein zweites memo schreiben.
Das funktioniert bedingt, komischerweise werden nur die Inhalte aus dem mitleren Drittel rausgenommen, nicht aber die aus dem ersten und aus dem letzten.
Ich weis nicht worans liegt.
Weiters würde ich gerne das Suchmuster weglassen, das ist im Moment noch mit im gefundenen String.

Hier mein Code:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  Memo1.Clear;
  Memo2.Clear;

  i := 0;
  Memo1.Lines.LoadFromFile(Edit1.Text);
 
  Memo1.Text := StringReplace(Memo1.Text, #13#10, '', [rfReplaceAll]);
  ShowMessage(Memo1.Lines[0]);
  for i := 0 to Memo1.Lines.Count - 1 do
  begin
    PerlRegEx1.Subject := Memo1.Lines[i];
    PerlRegEx1.RegEx := 'valign="top">(.*?)</td>';
    if PerlRegEx1.Match then
      Memo2.Lines.Add( PerlRegEx1.MatchedExpression );
  end;
 end;
Ich hoffe jemand kann mir helfen das Problem einzukreisen ;)

Danke Jungs

EDIT:
Ich verwende für die Regulären Ausdrücke die TPerlRegEx Komponente.

sexmagic 28. Feb 2007 20:12

Re: HTML Datei und RegEX Parser
 
Und ich habe vortschritte gemacht....

Leider nicht in richtung der Lösung des Problems aber dafür hab ich rausgefunden was derzeit passiert.

Also es ist nun so das durch die Grösse des Memos der extrem lange String auf 4 Zeilen verteilt wird, da ich das dann aus dem Memo wieder raushole durchläuft die Schleife das eben 4 mal.
Und findet deshalb nur 4 Matches weil es zwar das erste in der Zeile vorkommende valign="top"> nimmt aber leider das letzte </td> in der zeile, richtig wäre es wenn es das erste vorkommen von </td> nach dem "top"> tag nehmen würde.

Leider habe ich nun in 3 Stunden nicht rausgefunden wie das geht und hoffe noch immer auf einen Erlöser :)

-greez


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