IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

[Regex]Parsage du contenu d'un mail, header fields


Sujet :

Collection et Stream Java

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Hemophilius
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 105
    Par défaut [Regex]Parsage du contenu d'un mail, header fields
    Bonjour à tous
    Je viens vers vous car je n'arrive pas à trouver mon erreur. Comprenez : Ma regex "fonctionne", mais à moitié. Je voudrais que lorsqu'elle voit la ligne

    CRLF
    Content-Type: text/plain; charset=ISO-8859-1; format=flowed; delsp=yesCRLF

    Elle me sorte comme groupes

    Content-Type
    text/plain
    charset
    ISO-8859-1
    format
    flowed
    delsp
    yes


    Or, j'ai remarqué qu'elle ne me sors jamais les groupes "intérieurs". Au lieu du résultat ci-dessus, j'ai

    Content-Type
    text/plain
    delsp
    yes


    Les deux sections centrales ne sont pas répertoriées... Pourquoi ?

    Voici mon code entier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    public class RegexParser {
      public static void main(String[] args) throws Exception {
        Pattern p = Pattern.compile(
          "^(Content-Type):(?:[ \t]|\r\n )*((?:\r\n |[^;\r\n])+)(?:(?:[ \t]|\r\n )*;(?:[ \t]|\r\n )*(\\w*)=((\r\n |[^\r\n\\s])+))*\r\n", 
          Pattern.MULTILINE);
     
        //...
        // Le String s contient le mail, c'est le bon, rigoureusement testé.
     
        Matcher m = p.matcher(s);
        while (m.find()) {
          System.out.println("Matched: -" + m.group() + "-");
          for (int i = 1; i < m.groupCount(); i++)
            System.out.println("\tgroup" + i + ": -" + m.group(i) + "-");
        }
      }
    }
    Il doit y avoir une erreur avec les ?:. Pouvez-vous m'éclairer ? Ce serait vraiment sympa de votre part, car le parsing d'email c'est juste horrible :s

    EDIT/ Si vous voulez tester sur un vrai mail, essayez avec le fichier joint qui contient plusieurs Content-Type.
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Mail] Header et Timeout
    Par hisy dans le forum Langage
    Réponses: 9
    Dernier message: 21/12/2006, 22h17
  2. [Mail] mail : headers dans le corps du mail !?
    Par tytom dans le forum Langage
    Réponses: 1
    Dernier message: 24/08/2006, 12h44
  3. [VB]recuperer le contenu de mes mails
    Par mick84m dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 17/03/2006, 11h07
  4. [Mail] header "From:" avec mail()
    Par oranoutan dans le forum Langage
    Réponses: 16
    Dernier message: 16/12/2005, 15h49
  5. [Mail] Lire le contenu d'un mail
    Par hdd dans le forum Langage
    Réponses: 5
    Dernier message: 31/10/2004, 13h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo