Expression reguliere

Fermé
OrangeBleue - 17 mai 2008 à 00:13
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 19 mai 2008 à 11:09
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 !

6 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
17 mai 2008 à 00:15
Salut,

oui, c'est possible, mais avec quel outils/langage tu veux le faire
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
17 mai 2008 à 00:19
par 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

0
OrangeBleue Messages postés 23 Date d'inscription lundi 8 octobre 2007 Statut Membre Dernière intervention 27 février 2020
18 mai 2008 à 18:32
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
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
18 mai 2008 à 18:42
Salut,
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

0
OrangeBleue Messages postés 23 Date d'inscription lundi 8 octobre 2007 Statut Membre Dernière intervention 27 février 2020
19 mai 2008 à 10:10
ok
plus dur maintenant

ligne 1 : 1A abc bleu
ligne 2 : xyz 2BC rouge

si bleu alors retourne le premier groupe (1A)
si rouge alors retourne le second groupe (2BC)

en fait je voudrais pouvoir executer deux regex differentes selon la valeur d'un groupe....
Tu as une idée ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
19 mai 2008 à 10:18
Salut,

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?
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
19 mai 2008 à 11:09
Re,
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

0