Expression regulière, j'y arrive pas...
Nico
-
kilian Messages postés 8854 Statut Modérateur -
kilian Messages postés 8854 Statut Modérateur -
Bonjour à tous,
J'aimerai récupérer les fichiers nommés comme ci-dessous présent dans un répertoire :
win-log.log
win-log0.log
win-log1.log
win-log2.log
....
red-log.log
red-log0.log
red-log1.log
red-log2.log
.....
J'ai créé l'espression suivante, mais sans résultat :
"^(win-|red-)log*(.log)$"
Je pensais que ça allait faire un truc comme :
qui commence par "win-" ou "red-"
suivi de la chaine de caractère "log"
suivi de rien ou quelque chose
et qui se termine par ".log"
Si quelqu'un pouvait me filer un coup de main, car je galère...
Merci beaucoup.
Nico.
J'aimerai récupérer les fichiers nommés comme ci-dessous présent dans un répertoire :
win-log.log
win-log0.log
win-log1.log
win-log2.log
....
red-log.log
red-log0.log
red-log1.log
red-log2.log
.....
J'ai créé l'espression suivante, mais sans résultat :
"^(win-|red-)log*(.log)$"
Je pensais que ça allait faire un truc comme :
qui commence par "win-" ou "red-"
suivi de la chaine de caractère "log"
suivi de rien ou quelque chose
et qui se termine par ".log"
Si quelqu'un pouvait me filer un coup de main, car je galère...
Merci beaucoup.
Nico.
A voir également:
- Expression regulière, j'y arrive pas...
- Expression écrite cm1 cm2 télécharger gratuit - Télécharger - Éducatifs
- Microsoft expression encoder - Télécharger - Divers Utilitaires
- Expression de recherche - Guide
- Avoir du ping expression ✓ - Forum jeux en ligne
- T'as du ping expression - Forum Réseau
2 réponses
Salut,
^((win)|(red))-log[0-9]*\.log$
Petit complément si vous le permettez.
En fait les parenthèses on les utilise pour les captures où pour les alternatives
Dans la regex de kilian les parenthèses qui entourent les termes de l'alternative ne sont pas nécessaires.
En fait les moteurs des regex sont plutôt tenaces et persévérants mais en aucun cas intelligents.
Ils ne sauront pas trouver win mais un w suivi d'un i suivi d'un n.
Vous allez peut être dire que c'est du n'importe quoi ou que c'est pareil.
En réalité ce n'est pas pareil. Le moteur cherche d'abord en commençant avec la 1ère position dans notre cas le début de chaine.
Si jamais il n'a pas trouvé w alors il va chercher un r.
Si la correspondance échoue alors il va s'arrêter à cause de ^.
Si ^ n'existais pas il aurait recommencé à la deuxième position et ainsi de suite jusqu'à quand il aurait épuisé toutes les possibilités.
Donc il ne va jamais chercher i ou e si w ou r ne se trouve pas en début de chaine.
Dans ce cas c'est simple.
Mais dans une regex plus compliquée vous allez vous rendre compte à quel point c'est utile de lire le regex caractère par caractère.
^((win)|(red))-log[0-9]*\.log$
Petit complément si vous le permettez.
En fait les parenthèses on les utilise pour les captures où pour les alternatives
Dans la regex de kilian les parenthèses qui entourent les termes de l'alternative ne sont pas nécessaires.
^(win|red)-log[0-9]*\.log$win suivi de - ou de r puis ed-lo puis 0 ou plusieurs g puis le caractère qu'on veut puis log :-)
En fait les moteurs des regex sont plutôt tenaces et persévérants mais en aucun cas intelligents.
Ils ne sauront pas trouver win mais un w suivi d'un i suivi d'un n.
Vous allez peut être dire que c'est du n'importe quoi ou que c'est pareil.
En réalité ce n'est pas pareil. Le moteur cherche d'abord en commençant avec la 1ère position dans notre cas le début de chaine.
Si jamais il n'a pas trouvé w alors il va chercher un r.
Si la correspondance échoue alors il va s'arrêter à cause de ^.
Si ^ n'existais pas il aurait recommencé à la deuxième position et ainsi de suite jusqu'à quand il aurait épuisé toutes les possibilités.
Donc il ne va jamais chercher i ou e si w ou r ne se trouve pas en début de chaine.
Dans ce cas c'est simple.
Mais dans une regex plus compliquée vous allez vous rendre compte à quel point c'est utile de lire le regex caractère par caractère.
Vous êtes de vrai champion!