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