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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    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
    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
    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
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    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
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    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 690
    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
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    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