Reg EXP

c-r-y

Grünschnabel
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:
Pattern checkSubject = Pattern.compile("Subject: (.*)");
      Matcher checkingSubjects = checkSubject.matcher(array[i]);

      if (checkingSubjects.matches()) {
        subject = checkingSubjects.group(1).toString();
      }

Vielen Dank im Voraus.
 
Zuletzt bearbeitet:
Hallo c-r-y,

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

Java:
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
 
Zuletzt bearbeitet:
Ein generischer regulärer Ausdruck wäre:
Code:
=\?([^?]+)\?([QBqb])\?([^?]+)\?=

Danke! Es klappt einwandfrei :)

Code:
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-";
      }
 
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 ?
 
Das Q steht für die Quoted-printable-Kodierung, das B für die Base-64-Kodierung. Die Kleinbuchstaben analog dazu.
 
Zurück