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

C# Discussion :

Problème sur expression règulière


Sujet :

C#

  1. #1
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 33
    Par défaut Problème sur expression règulière
    Bonjour à tous,

    J’essaie de mettre en place une expression régulière afin de parcourir un ensemble de répertoire et de ne renvoyer que les arborescences qui correspondent au masque de cette même expression.

    Les dossiers que je souhaite retenir ont le masque suivant :

    EX chemin A : Y:\NOM_DU_PROJET\livré\V2003_MODULEA_2.1.0#0
    Ex chemin B : Y:\NOM_DU_PROJET2\livré\V2005_MODULEB_2.2.0#0

    Dans mon expression régulière je met aussi des captures car mon but est de consolider un fichier CSV avec :

    Nom du projet || NOM Du module || Version de livraison

    exemple avec le chemin A ci dessus:

    NOM_DU_PROJET || MODULEA || V2003_MODULEA_2.1.0#0

    Voici mon expression régulière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Y:\\([a-zA-Z0-9_\040\.]+)\\.*(V2003|V2005[._]([a-zA-Z0-9_\040\.]+)[._][23]+\.[0-9]+\.[0-9]#[0-9]+)
    Et voici maintenant mon problème :

    La ligne suivante est renvoyée par l'expression régulière alors qu'elle ne correspond pas au masque que je désire ( il n'y a pas la version mais juste 2003) :

    Y:\NOM_DU_PROJET3\V2003_MODULE\V2003

    Chaîne 3: Y:\NOM_DU_PROJET3\V2003_MODULE\V2003

    Résultat : vrai
    Capture 1 : NOM_DU_PROJET3
    Capture 2 : V2003


    Je penses que le souci viens de cette partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (V2003|V2005[._]([a-zA-Z0-9_\040\.]+)[._][23]+\.[0-9]+\.[0-9]#[0-9]+)
    Si je suppose bien, il fait un "ou" avec "V2003" et "V2005[._]([a-zA-Z0-9_\040\.]+)[._][23]+\.[0-9]+\.[0-9]#[0-9]+)."

    Alors que moi, je veux simplement faire un "ou" entre "V2003" ou "V2005" puis tout le reste de l'expression doit être appliqué...

    J'ai tenté de corriger comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ([V2003|V2005][._]([a-zA-Z0-9_\040\.]+)[._][23]+\.[0-9]+\.[0-9]#[0-9]+)
    Il y a un peu de mieux car maintenant la livraison n'ayant pas le bon format n'est plus renvoyée mais la capture ne fonctionne plus correctement , j’obtiens :

    Chaîne 1: Y:\NOM_DU_PROJET\livré\V2005_MODULE_2.1.0#0

    Résultat : vrai
    Capture 1 : NOM_DU_PROJET
    Capture 2 : 5_MODULE_2.1.0#0
    Capture 3 : MODULE

    Je pense qu'avec les [] et le "|" , il renvoi le caractère différent entre les deux chaines ...

    Merci par avance de votre aide!

    A plus tard,

    Rémy

  2. #2
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Et si tu essayes comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Y:\\([a-zA-Z0-9_\040\.]+)\\.*((?:V2003|V2005)_([a-zA-Z0-9_\040\.]+)_[23]+\.[0-9]+\.[0-9]#[0-9]+)
    En fait, dans une regex, le . s'il n'est pas échappé, signifie n'importe quel caractère..

    En plus, des [] détermine une classe, cela signifie en gros que n'importe quel caractère de la classe sera pris.

    Dans le groupe (?:V2003|V2005), j'ai ajouté un ?: en entête, cela signifie simplement que le groupe n'est pas capturé.

    En espérant que ça te convienne

    Au cas où, un bon logiciel pour construire et tester les regex : http://www.ultrapico.com/Expresso.htm

  3. #3
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 33
    Par défaut
    Bonjour,

    C'est parfait, merci bcp !

    Je m'en était sorti en créant une capture supplémentaire comme tu l'a fait mais je ne connaissais pas l’existence de "?:" pour ne pas garder cette capture!

    Encore merci.


    Rémy

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

Discussions similaires

  1. [MySQL] problème d'expressions régulières sur serveur américain
    Par Anandamine dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 22/06/2012, 03h56
  2. Problème d'expression régulière
    Par SiM07 dans le forum Langage
    Réponses: 2
    Dernier message: 02/12/2005, 17h57
  3. Problème d'expression régulière
    Par Pymm dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 11/10/2005, 15h04
  4. [RegEx] Petit Bug sur Expression Régulière
    Par Delphy113 dans le forum Langage
    Réponses: 2
    Dernier message: 25/09/2005, 20h48
  5. Problème d'expression régulière
    Par Neitsa dans le forum Général Python
    Réponses: 3
    Dernier message: 11/08/2005, 14h29

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