Expression reguliere

OrangeBleue -  
lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
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 !
A voir également:

6 réponses

lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

oui, c'est possible, mais avec quel outils/langage tu veux le faire
0
lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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 28 Statut Membre
 
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 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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 28 Statut Membre
 
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 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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