Expression reguliere

OrangeBleue -  
lami20j Messages postés 21506 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 !
Configuration: Windows XP
Firefox 2.0.0.14

6 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    oui, c'est possible, mais avec quel outils/langage tu veux le faire
    0
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  3. 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
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
    1. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  7. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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