[Delphi/TRegExpr] Wyrażenia regularne koniec linii

0

mam taki tekst w stringu:

Server: aris
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Last-Modified: Fri, 09 Jan 2009 21:47:35 GMT
Pragma: no-cache
Cache-Control: no-cache
Content-type: text/html; charset=ISO-8859-2
Set-Cookie: reksticket=1231537655; expires=Sunday, 11-Jan-09 21:47:35 GMT; path=/; domain=.www.wp.pl
Set-Cookie: rekticket=1231537655; expires=Sunday, 11-Jan-09 21:47:35 GMT; path=/; domain=.wp.pl
Set-Cookie: statid=83.31.203.234.28704:1231537655:606811849:v1; path=/; expires=Mon, 09-Jan-12 21:47:35 GMT
Set-Cookie: statid=83.31.203.234.28704:1231537655:606811849:v1; domain=.wp.pl; path=/; expires=Mon, 09-Jan-12 21:47:35 GMT
Content-Length: 131732
Connection: close

chce wyłapać z etgo pierwszą lnię która zaczyna się Set-Cookie, ewentualnie wszystkie linie zaczynające się Set-Cookie, uzywam do tego TRegExpr nie moge sie doszukać odpowiedzi w necie nigdzie nawet przejrzałem uważnie dokumentacje RegExa ale nic ostatecznie mam cos takiego:
Set-Cookie:\s([\w=;\s,-:/]+)\n standardowe czytanie lini /^S/ itp nie działają w regexie nie wiem czemu, mój kod łapie wszystkie linie od pierwszego wystąpienia Set-Cookie a ja chce aby w momencie gdy juz skończy się linia nie pobierał następnych czyli w skrócie wszystko od Set-Cookie do \n końca linii.
z góry thx za pomoc

0

O ile dobrze zrozumiałem chcesz mieć w wynikach tylko pierwsze wystąpienie tego co po SetCockie: jak
tak to użyj tego kodu. Jeżeli chcesz wszystkie wystąpienia - usuń Exit; i komentarze z przed dwóch linijek:

function ExtractHtml(const AInputString : string) : string;
const
  HtmlRE = 'Set-Cookie:(.+?)\n';
var
  R : TRegExpr;
begin
  Result := '';
  R := TRegExpr.Create;
  try
     R.Expression := HtmlRE;
     if R.Exec (AInputString) then
     // repeat
       Result := Result + R.Match[1] + #13#10;
       Exit;
     // until not R.ExecNext;
    finally
    R.Free;
   end;
end;

Użycie to wiadomo:

  Memo2.Clear;
  Memo2.Text := ExtractHtml(Memo1.Text);

Napisz czy o to chodziło, ja nie jestem za dobry w wyrażeniach regularnych, ale zrobił bym to właśnie tak.

0

wielkie dzięki właśnie o to chodziło ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1