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 :

Rédaction d'une expression régulière


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 247
    Par défaut Rédaction d'une expression régulière
    Bonjour, pour la première fois je dois rédiger une expression régulière.
    J'ai regardé quelques cours en ligne mais je dois avouer que cela me semble bien compliqué alors que mon expression est très simple à expliquer.
    J'aimerais que mon expression coupe une chaine de la façon suivante:

    delimiteur suivi de n'importe quoi suivi de delimiteur et separateur ou separateur

    delimiteur et separateur sont des caracteres que je definis dynamiquement
    je la redigerais de la façon suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (delimiteur .* delimiteur separateur)|separateur
    ce la n'a pas l'air correct malheuresement.

    Merci de me venir en 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,


    Sans le code exact ca va être difficile de t'aider...


    a++

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 247
    Par défaut
    par exemple avec un delimiteur ayant pour valeur " et un separateur ayant pour valeur ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String maChaine="ceci;est;un;test"
    String[] result=chaine.split(maRegEx)
    devrait me retourner un tableau de 4 valeurs (ceci, est, un, test). Je viens de tester, cela fonctionne

    Par contre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String maChaine="\"ceci\";est;un;test"
    devrait retourner un tableau avec les valeurs suivantes:"ceci", est, un test.
    Mais cela ne fonctionne pas: la première valeur("ceci") n'est pas retenue

    PS: j'ai modifié ma regex de la manière suivante et ça a l'air de fonctionner.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (delimiteur.^delimiteur* delimiteur separateur)|separateur
    Je suis toujours preneur de vos avis !

  4. #4
    Membre chevronné
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2010
    Messages : 158
    Par défaut
    Citation Envoyé par enzostar Voir le message
    J'aimerais que mon expression coupe une chaine de la façon suivante:
    delimiteur suivi de n'importe quoi suivi de delimiteur et separateur ou separateur
    Citation Envoyé par enzostar Voir le message
    par exemple avec un delimiteur ayant pour valeur " et un separateur ayant pour valeur ;
    [...]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String maChaine="\"ceci\";est;un;test"
    devrait retourner un tableau avec les valeurs suivantes:"ceci", est, un test.
    Mais cela ne fonctionne pas: la première valeur("ceci") n'est pas retenue
    Tu as donc utilisé l'expression comme expression régulière ?

    Réexplique ce que tu veux faire exactement, car ce comportement semble bien correspondre à ce que tu as décrit dans ton premier message : la chaîne "ceci"; correspond à la description " suivi de n'importe quoi suivi de " et ; et elle est donc considérée un délimiteur pour le split.

    Si tu veux que la chaîne "\"ceci\";est;un;test" soit splittée en quatre morceaux "\"ceci\"", "est", "un" et "test", c'est donc que tu veux seulement considérer le point-virgule comme délimiteur, non ?
    Bref, je ne comprends pas ce que tu cherches à faire.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 247
    Par défaut
    c'est donc que tu veux seulement considérer le point-virgule comme délimiteur, non ?
    Bref, je ne comprends pas ce que tu cherches à faire.[/QUOTE]
    non car un ; entre deux delimiteurs ne doit pas être pris en compte.
    J'essaie d'être plus clair:
    j'aimerais que le debut de la regex soit mon delimiteur
    et que la fin soit delimiteur suivi de separateur
    entre le debut et la fin on peut trouver tous les caracteres (y compris separateur et delimiteur)
    D'ailleurs je viens de tester avec cette chaine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String chaine = "Je \"suis\" ;zen;";
    et ça split apres "suis" alors qu'il y a un espace entre le " et le ;

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Par défaut
    Bonjour,
    ne peux-tu tout simplement pas utiliser un séparateur que tu ne risques pas de retrouver dans tes phrases ? puis faire un simple split() ?
    Le séparateur peut-être composé de plusieurs caractères, il suffit de trouver une association improbable !
    Pour être caricatural, tu pourrais très bien faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    String chaine = ",;=:#MONSEP#\"Je suis stressé\";...#MONSEP#etc etc";
    String[] resultat = chaine.split("#MONSEP#");
     
    // -> [,;=:] ["Je suis stressé";...] [etc etc]
    Si tu n'as pas le choix du séparateur, donne nous une ligne contenant les différents problèmes que tu rencontres et le résultat que tu souhaiterais, car en séparant tes problèmes comme tu l'as fait dans les posts précédents, nous allons te trouver une solution pour chaque problème individuellement mais qui ne sera peut-être pas bonne globalement.

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

Discussions similaires

  1. [EXP] Evaluation dans une expression régulière
    Par SergentHeinz dans le forum Langage
    Réponses: 7
    Dernier message: 10/11/2005, 18h17
  2. Une expression réguliére
    Par BRAUKRIS dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 09/09/2005, 20h14
  3. Réponses: 6
    Dernier message: 17/08/2005, 12h38
  4. Problème sur une expression régulière
    Par Verbal-Quint dans le forum Langage
    Réponses: 6
    Dernier message: 12/11/2004, 10h54
  5. [Regex] Vérifier qu'une chaîne respecte une expression régulière
    Par PeteMitchell dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 13/05/2004, 14h22

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