Einzelnen Beitrag anzeigen

Real-TTX

Registriert seit: 7. Mai 2008
Ort: Stuttgart / Wertheim
136 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Reguläre Ausdrücke - Vorgehensweise ?

  Alt 6. Jul 2009, 22:06
Danke nochmals für die Antworten...

Leider stecke ich schon wieder ein bisschen in der Klemme. Ich will eine HTML Datei filtern die folgend aufgebaut ist :

[code
span class=....>Hier steht der Text, der zur nachfolgenden Zeile gehört....</span>
<xy...>Klick
[/code]

Wie ich das im moment versuche zu lösen ist mehr als schlecht - funktioniert ja auch nicht

Delphi-Quellcode:


function getLinks(aLink : string; aExpression : WideString; aExpressionPre : WideString) : TLinks; overload;

.....

function TMyFuckingTestClass.getLinks(aLink : string; aExpression : WideString; aExpressionPre : WideString) : TLinks;
var
  objRegEx : TRegExpr;
  objRegExPre : TRegExpr;
  objContent : TStringList;
  intCounter : integer;
  blnFounded : boolean;
begin

  objRegEx := TRegExpr.Create;
  objRegEx.Expression := aExpression;
  objRegEx.ModifierG := false;

  objRegExPre := TRegExpr.Create;
  objRegExPre.Expression := aExpressionPre;
  objRegExPre.ModifierG := false;

  objContent := TStringList.Create;
  objContent := objHTTP.DownloadToStringList(aLink); // nur der Download....

  blnFounded := false;

  for intCounter := 0 to objContent.Count - 1 do
  begin
      // Name herausfiltern (Erste Zeile)
      if (objRegExPre.Exec(objContent[intCounter])) then
      begin
        repeat
          if (Length(result) >= 1) then
          begin
            SetLength(result,Length(result)+1);
          end else begin
            SetLength(result, 1);
          end;
          blnFounded := true;
          result[Length(result)-1].Name := objRegExPre.Match[1];
        until not objRegExPre.ExecNext;
      end;
      // Link herausfiltern (folgende Zeile)
      if objRegEx.Exec(objContent[intCounter]) then
      begin
        repeat
          if blnFounded = true then
          begin
            result[Length(result)-1].Link := objRegEx.Match[1];
            blnFounded := false;
          end;
        until not objRegEx.ExecNext;
      end;

  end;

end;

....

  result := xy.getLinks(aLink, 'href="(http\:\/\/alink\.org\/.+)"', '

[b](.+)<\/strong>
'); // Link der erste Ausdruck und Name der zweite.... Aber funktioniert einfach nicht :O

Danke euch...

Gruß, Real-TTX
  Mit Zitat antworten Zitat