Expression reguliere
Bonjour,
Donc est-il possible d'écrire une expression qui se comporterait différemment selon la valeur d'un groupe ?
par exemple :
ligne 1 : abc bleu
ligne 2 : xyz rouge
si c'est 'bleu' retourne ce qui est compris entre 'a' et 'c', donc 'b'
et si c'est 'rouge' retourne ce quui est compris entre 'x' et 'z', donc 'y'
Là je suis sec :-(
Merci pour votre aide !
Donc est-il possible d'écrire une expression qui se comporterait différemment selon la valeur d'un groupe ?
par exemple :
ligne 1 : abc bleu
ligne 2 : xyz rouge
si c'est 'bleu' retourne ce qui est compris entre 'a' et 'c', donc 'b'
et si c'est 'rouge' retourne ce quui est compris entre 'x' et 'z', donc 'y'
Là je suis sec :-(
Merci pour votre aide !
Configuration: Windows XP Firefox 2.0.0.14
6 réponses
-
ModérateurSalut,
oui, c'est possible, mais avec quel outils/langage tu veux le faire -
Modérateurpar exemple avec perl
lami20j@debian:~/trash$ cat regex.txt ligne 1 : abc bleu ligne 2 : xyz rouge lami20j@debian:~/trash$ perl -ne 'print $1,"\n" if /.*\s\w(\w)\w\s+bleu/' regex.txt b lami20j@debian:~/trash$ perl -ne 'print $1,"\n" if /.*\s\w(\w)\w\s+rouge/' regex.txt y
-
merci pour ta réponse,
si je comprend bien il faut faire une expression pour le 'bleu' et une pour 'rouge'.
Mais n'y a-t-il pas moyen de n'écrire qu'une seule expression ?
Merci -
ModérateurSalut,
lami20j@debian:~$ cat regex.txt ligne 1 : abc bleu ligne 2 : xyz rouge lami20j@debian:~$ perl -ne 'print $1,"\n" if /.*\s\w(\w)\w\s+(bleu|rouge)/' regex.txt b y
-
ModérateurSalut,
Tu as une idée ?
J'ai plein d'idées môa, des fois bonnes des fois mauvaises ;-))
Tu joues à quoi? ;-)
Pourquoi n'exposes tout le problème d'un coup, au lieu de donner goutte à goutte?
-
ModérateurRe,
root@debian:~# cat regex.txt ligne 1 : 1A abc bleu ligne 2 : xyz 2BC rouge root@debian:~# perl -ne 'print $1,"\n" if /.*:\s*(\w+)\s+(\w+)\s+(bleu)/' regex.txt 1A root@debian:~# perl -ne 'print $2,"\n" if /.*:\s*(\w+)\s+(\w+)\s+(rouge)/' regex.txt 2BC