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

Alles rund um die Programmierung mit Qt
Antworten
Treehouse
Beiträge: 100
Registriert: 18. Juni 2007 10:21

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

Beitrag 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
Zuletzt geändert von Treehouse am 22. September 2007 23:02, insgesamt 1-mal geändert.
caligano
Beiträge: 126
Registriert: 19. August 2006 15:33

Beitrag 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.
Treehouse
Beiträge: 100
Registriert: 18. Juni 2007 10:21

Beitrag von Treehouse »

Hey super danke für deine Antwort...............ich werde das testen. Ich meld mich ob es geklappt hat.

Gruß

Treehouse
Treehouse
Beiträge: 100
Registriert: 18. Juni 2007 10:21

Beitrag 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.
caligano
Beiträge: 126
Registriert: 19. August 2006 15:33

Beitrag von caligano »

Dann poste etwas mehr Code von dir und auch eine Testmail zum Parsen...
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Warum überhaupt eine RegExp für sowas einfaches??
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
RD1978
Beiträge: 84
Registriert: 5. Juni 2007 08:00
Wohnort: Stralsund (DDR)

Beitrag 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
Treehouse
Beiträge: 100
Registriert: 18. Juni 2007 10:21

Beitrag 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
Treehouse
Beiträge: 100
Registriert: 18. Juni 2007 10:21

Beitrag von Treehouse »

Hey RD1978 das klappt super der trick mit dem "setMinimal" . Ich danke dir vielmals.

Gruß

Treehouse
Antworten