[RegEx] Parser Chemin flexible
Bonjour à tous
Je ne suis pas familier avec les RegEx, je les ai déjà utilisées quelques fois et j'ai toujours réussi à me dépatouiller mais là... Je tourne en rond
Je souhaite valider et découper un chemin cible vers un serveur ftp. Les formes qui doivent être accepté sont les suivantes:
- /aFFAIRE/prepa_trx/TestAlice/Mon fichier.csv
- prepa_trx/TestAlice/Mon fichier.csv
- /AFFAIRE/prepa_trx/TestAlice/
- /prepa_trx/TestAlice/Mon fichier.csv
- /AFFAIRE/prepa_trx/TestAlice
J'ai créé l'expression suivante (du moins c'est cells qui semble le plus proche de ce que je souhaite réaliser)
Code:
^(\/AFFAIRE\/)?\/?((?:(?:[a-z0-9_\-^!#$%&+={}.\\[\]\ ])+\/|$)*)((?:[a-z0-9_\-^!#$%&+={}.\ ])+(?:\.[a-z0-9]{2,4}$))?|$ (avec igm; j'ai mis le m pour faire mes tests, je le retire en "prod")
En terme de validité, je cherche à avoir
- "/AFFAIRE/" si présent
- (/)prepa_trx/TestAlice(/) le chemin
- Mon Fichier.csv ... le nom du fichier
Je valide les 3 premières lignes, partiellement la 4ème (le / du début n'est pas retenu mais ça ne me dérange pas, c'est même mieux).
Par contre la 5ème forme me résiste, si je rends facultatif le / dans le second groupe, il considère le nom de fichier comme faisant partie du chemin.
Si quelqu'un pouvez me filer un coup de main, ce serait sympa :)
Je vous souhaite une bonne soirée
++
Qwaz