Seite 1 von 1

[gelöst] Problem mit einem QByteArray und einem QRegExp

Verfasst: 22. September 2007 13:24
von Treehouse
Hallo zusammen,

ich versuche jetzt schon einige Zeit aus einer Mail die "From:" Zeile raus zu filtern.
Leider scheitert es meiner Meinung daran (ist nur eine Vermutung!) daß das ByteArray nicht richtig das Format der Mail hat, also Zeilen umbrüche etc.. Obwohl wenn ich es ausgeben lasse alles richtig aussieht.

Wenn ich folgendes mache "QRegExp rx("^From:(.+)");" hatte ich normalerweise gedacht das ich so die Zeile extrahieren könnte was aber leider nicht geht.

Wenn ich es so versuche "QRegExp rx("From:(.+)");" bekomme ich ab dem From: die ganze Mail angezeigt.

Kann mir vielleicht einer einen Tip geben woran das liegen könnte oder wie ich den RegExp besser aufbauen kann?

Ist es vielleicht auch möglich das ich das Array erst anders abspeichern muss vielleicht als String und diesen String erst formatieren muss damit das klappt?

Gruß

Treehouse

Verfasst: 22. September 2007 15:29
von caligano
Probiere es mit \n bzw. \r\n (=Zeilenumbruch):

Code: Alles auswählen

QRegExp rx("From:(.+)\\r\\n");
Sehr hilfreich ist übrigens das bei der Qt-Installation mitgelieferte Tool RegExp im Ordner $QTDIR\examples\tools\regexp\ zum Testen der regulären Ausdrücke.

Verfasst: 22. September 2007 18:26
von Treehouse
Hey super danke für deine Antwort...............ich werde das testen. Ich meld mich ob es geklappt hat.

Gruß

Treehouse

Verfasst: 22. September 2007 18:47
von Treehouse
caligano hat geschrieben:Probiere es mit \n bzw. \r\n (=Zeilenumbruch):

Code: Alles auswählen

QRegExp rx("From:(.+)\\r\\n");
Sehr hilfreich ist übrigens das bei der Qt-Installation mitgelieferte Tool RegExp im Ordner $QTDIR\examples\tools\regexp\ zum Testen der regulären Ausdrücke.
Mhh leider klappt das so auch nicht es wird wieder die ganze mail angezeigt........... das ist echt komisch. :roll:

Was kann denn daran so schief laufen?.... ich meine ja immer noch das es etwas mit der Internen formatierung zu tun hat, denn er findet einfach das Zeilen ende nicht......... aber ich bin auch noch nicht so lange bei Qt um das zu beurteilen.

Verfasst: 22. September 2007 18:51
von caligano
Dann poste etwas mehr Code von dir und auch eine Testmail zum Parsen...

Verfasst: 22. September 2007 19:10
von Christian81
Warum überhaupt eine RegExp für sowas einfaches??

Verfasst: 22. September 2007 19:26
von RD1978
Hallo,

versuch es mal mit:

Code: Alles auswählen

QRegExp regex;
regex.setMinimal( true );
regex.setPattern( "From:(.+)\\r\\n" );
Oder guck Dir mal die Funktion http://doc.trolltech.com/4.3/qbytearray.html#mid an.

MfG RD1978

Verfasst: 22. September 2007 21:16
von Treehouse
RD1978 hat geschrieben:Hallo,

versuch es mal mit:

Code: Alles auswählen

QRegExp regex;
regex.setMinimal( true );
regex.setPattern( "From:(.+)\\r\\n" );
Oder guck Dir mal die Funktion http://doc.trolltech.com/4.3/qbytearray.html#mid an.

MfG RD1978
Ok ich danke dir für den Tip, ich werde das gleich testen ...... meld mich dann zurück.

Gruß

Treehouse

Verfasst: 22. September 2007 23:02
von Treehouse
Hey RD1978 das klappt super der trick mit dem "setMinimal" . Ich danke dir vielmals.

Gruß

Treehouse