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 !
Configuration: Windows XP
Firefox 2.0.0.14

6 réponses

  1. Modérateur
    Salut,

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

      1. 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
        1. Modérateur
          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

          1. 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 ?
        2. Modérateur
          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?
          1. Modérateur
            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