tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
431
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    c-r-y c-r-y ist offline Grünschnabel
    Registriert seit
    Dec 2004
    Beiträge
    2
    Hallo,


    leider komme ich momentan nicht weiter. Ich schreibe derzeit einen Mail-Service in Java und lese die Informationen mithilfe des POP3-Befehls "RETR <X>", wobei <X> fuer die Message-ID steht, aus.

    Im Betreff (Subject) steht dann aber z.B. =?ISO-8859-1?Q?Test-Betreff?= aber ich finde hierfuer keinen passenden RegExp. Kann mir da jemand helfen? Bitte bedenken, dass es hierfuer auch UTF-8 usw.. gibt von den Encodings her.

    So siehts momentan bei mir aus:

    Code :
    1
    2
    3
    4
    5
    6
    
    Pattern checkSubject = Pattern.compile("Subject: (.*)");
          Matcher checkingSubjects = checkSubject.matcher(array[i]);
     
          if (checkingSubjects.matches()) {
            subject = checkingSubjects.group(1).toString();
          }

    Vielen Dank im Voraus.
    Geändert von c-r-y (12.11.08 um 11:41 Uhr) Grund: Code-Tag eingefuegt.
     

  2. #2
    Avatar von MAN
    MAN MAN ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Beiträge
    426
    Hallo c-r-y,

    wie wäre es ohne reguläre Ausdrücke und zwar mit der split-Funktion?

    Code java:
    1
    2
    3
    4
    5
    
    String[] fields = array[i].split("\\?");
     
    if (fields.length == 5) {
        subject = fields[3];
    }

    Aber auch nur, wenn es immer die gleiche Anzahl an "Feldern" ist, die mit einem Fragezeichen getrennt sind und das 4. Feld (Index 3) der Betreff ist.
    Was ich dann hier gerade überlege, wie man ein Fragezeichen im Betreff deutet?

    Viele Grüße,
    MAN
    Geändert von MAN (15.11.08 um 20:41 Uhr)
     
    BLT - Die Bundesliga Tabelle der Saison 2011 / 2012 - http://www.spacehoster.de/blt/ NEU: mit Tippspiel!
    EMail: mstangel@gmx.de

  3. #3
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Ein generischer regulärer Ausdruck wäre:
    Code :
    1
    
    =\?([^?]+)\?([QBqb])\?([^?]+)\?=
     
    Markus Wulftange

  4. #4
    c-r-y c-r-y ist offline Grünschnabel
    Registriert seit
    Dec 2004
    Beiträge
    2
    Zitat Zitat von Gumbo Beitrag anzeigen
    Ein generischer regulärer Ausdruck wäre:
    Code :
    1
    
    =\?([^?]+)\?([QBqb])\?([^?]+)\?=
    Danke! Es klappt einwandfrei

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    Pattern checkSubject = Pattern.compile("Subject: =\\?([^?]+)\\?([QBqb])\\?([^?]+)\\?=");
          Matcher checkingSubjects = checkSubject.matcher(array[i]);
     
          if (checkingSubjects.matches()) {
            subject = checkingSubjects.group(3).toString();
          } 
               
          if (subject.isEmpty()) {
            subject = "-no subject-";
          }
     

  5. #5
    Avatar von takidoso
    takidoso takidoso ist offline Mitglied Brillant
    Registriert seit
    Aug 2004
    Ort
    Kömigstein
    Beiträge
    911
    hi,
    mal eine rein fachliche Frage von einem Ahnungslosen
    wofür steht in dem Ausdruck QBqb
    ich meine in Deinem Beispiel sehe ich ein Q also würde ich Q und q verstehen warum, aber warum auch das B und b ?
     

  6. #6
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Das Q steht für die Quoted-printable-Kodierung, das B für die Base-64-Kodierung. Die Kleinbuchstaben analog dazu.
     
    Markus Wulftange