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 :

Java Pattern et matcher


Sujet :

Collection et Stream Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 226
    Points : 114
    Points
    114
    Par défaut Java Pattern et matcher
    Bonjour,

    j'ai un petit souci d'utilisation des Pattern...

    J'ai le texte:
    Activation:[10/11/2008-18:54:32]-PartnerID:[001]<br>Deactivation:[10/11/2008-19:00:20]-PartnerID:[001]<br>
    J'aimerais qu'il devient:
    Activation:[10/11/2008-18:54:32]<br>Deactivation:[10/11/2008-19:00:20]<br>
    La partie du texte "PartnerID:[001]" est variable (ex. "PartnerID:[xx]" ou "PartnerID:[xxx]"). De plus, le texte de base peut se répéter plusieurs fois.

    J'ai voulu utiliser le Pattern:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    String Description = "Activation:[10/11/2008-18:54:32]-PartnerID:[001]<br>Deactivation:[10/11/2008-19:00:20]-PartnerID:[001]<br>";
     
    Pattern pattern;
    Matcher matcher;
     
    pattern = Pattern.compile("-PartnerID:\p{Punct}*\p{Punct}");
    matcher = pattern.matcher(Description);
     
    while(matcher.find()) {
    	System.out.println("Trouvé !");
    }
    Description = matcher.replaceAll("<br>");
    J'ai essayé avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    pattern = Pattern.compile("-PartnerID:\p{Punct}*\p{Punct}");   //Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \\ )
    pattern = Pattern.compile("-PartnerID:\p{[}.*\p{]}");   //Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \\ )
    pattern = Pattern.compile("-PartnerID.*<br>");   //Coupe jusqu'à la fin, il ne trouve pas le pattern du milieu
    pattern = Pattern.compile("-PartnerID*<br>");   //Ne trouve rien, le texte reste intacte
    pattern = Pattern.compile("-PartnerID:\[.*\]");   //Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \\ )
    pattern = Pattern.compile("-PartnerID:....");   //ok, mais longueur fixe...
    Mais aucune fonctionne!!

    Est-ce que ça ne vas jamais fonctionner et je reprend la vieille boucle while?
    Ou est-ce qu'il y a un détail qui m'échappe??

    Merci d'avance pour toute réponse

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 226
    Points : 114
    Points
    114
    Par défaut
    Personne n'a une petite idée?

  3. #3
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Pour les "invalid sequence", il faut doubler les \ (\p devient \\p).

    Sinon tu veux faire quoi exactement ? Supprimer le teste "-PartnerID:[001]" ???
    Dans ce cas pourquoi ne pas utiliser replaceAll() ?


    a++

  4. #4
    Membre actif

    Inscrit en
    Octobre 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 133
    Points : 295
    Points
    295
    Par défaut
    Apparemment il faut changer les PartnerID quelque que soit l'id du partner (ici 001, mais aussi 002).

    Comme tu dis, il faut doubler les \.
    Une expression régulière qui marche avec ta ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pattern.compile("-PartnerID:\\p{Punct}\\p{Digit}+\\p{Punct}")

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 226
    Points : 114
    Points
    114
    Par défaut
    Vu que "PartnerID:[xxx]" peut aussi contenir du texte, j'ai utilisé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pattern = Pattern.compile("-PartnerID:\\p{Punct}.*\\p{Punct}");
    Merci beaucoup pour l'aide précieux!!

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

Discussions similaires

  1. Regexp Pattern et Matcher
    Par Space23 dans le forum Général Java
    Réponses: 3
    Dernier message: 23/09/2011, 00h08
  2. Expressions régulières en Java,Pattern et Matcher
    Par Malatok dans le forum Général Java
    Réponses: 8
    Dernier message: 08/09/2010, 15h08
  3. [Observateur] [Java] Pattern pour la communication IHM Métier
    Par flool dans le forum Design Patterns
    Réponses: 13
    Dernier message: 13/06/2007, 17h51
  4. JDK1.3 Pattern et Matcher
    Par Shabata dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 13/03/2006, 11h29
  5. [Facade] [Java] Pattern Facade et accès aux packages
    Par manube dans le forum Design Patterns
    Réponses: 19
    Dernier message: 10/03/2006, 11h12

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