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 :

Problème sur split avec regex


Sujet :

Collection et Stream Java

  1. #1
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut Problème sur split avec regex
    Bonjour.
    Je souhaite séparer une chaine de caractères en plusieurs lignes.
    Le séparateur est le caractère '
    La contrainte est que si le caractère ' est précédé du caractère ? je ne le prends pas en compte pour la séparation.
    Un petit split avec une regex m'irait très bien mais je n'y arrive pas.

    Si je fais ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    maChaine.split("[^\\?]'");
    Le caractère à la place du ? est éliminé, ce que je ne veux pas.

    ABC'DEF'GHI' doit produire 3 lignes: ABC DEF et GHI
    ABC'DEF?'GHI' doit produire 2 lignes: ABC et DEF?'GHI

    Merci pour votre aide.

  2. #2
    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,


    Ce résultat est "normal" : ton expression indique que le séparateur est le caractère ' précédé d'un caractère quelconque autre que ?...


    Pour résoudre ton problème tu doit utiliser le "negative lookbehind" (?<!X) qui indique que le pattern X ne doit pas précédé l'élément.
    Cela a également l'avantage de ne pas "consommer" de caractère (il ne sera pas pris comme résultat du match, et donc ne sera pas supprimé) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maChaine.split("(?<!\\?)'");
    a++

  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Merci pour l'explication.
    C'est effectivement écrit dans la Javadoc de la classe Pattern, mais je trouve l'explication un peu légère.

  4. #4
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 562
    Points : 15 502
    Points
    15 502
    Par défaut
    En effet les explication sur les lookahead et lookbehind sont plus que sommaire dans la javadoc: si tu veux plus d'info, ce site explique le principe plutôt bien:
    http://www.regular-expressions.info/lookaround.html

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Merci pour le lien, je cherchais justement un site qui expliquait tout ça.

Discussions similaires

  1. Problème sur Requête avec NOT IN
    Par Sophie1206 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 08/06/2014, 21h14
  2. [WD17] un petit problème sur etat avec saisie
    Par hadaf dans le forum WinDev
    Réponses: 4
    Dernier message: 16/07/2013, 10h24
  3. Problème sur Dcount avec une clause where
    Par robyseb dans le forum VBA Access
    Réponses: 9
    Dernier message: 18/08/2011, 22h39
  4. Problème de split avec #13#10 ?
    Par [ZiP] dans le forum Langage
    Réponses: 3
    Dernier message: 30/09/2008, 14h14
  5. [débutant]petit problème sur formulaire avec onglets
    Par Christophe93250 dans le forum Access
    Réponses: 2
    Dernier message: 06/01/2006, 10h46

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