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é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
-
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é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
-
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é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
-
ModérateurSalut,
oui, c'est possible, mais avec quel outils/langage tu veux le faire