IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation et administration système Perl Discussion :

REGEXP probleme expression


Sujet :

Programmation et administration système Perl

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 139
    Par défaut REGEXP probleme expression
    Bonjour,

    J'aimerais avoir une regexp qui arrive à me matcher des expressions du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    route delete src 192.168.1.10 dst 192.12.23.69 ncol test
    Jusqu'ici, pas de soucis. Mais je dois également être capable de matcher ces expressions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    route delete src 192.168.1.10
    route delete src 192.168.1.10 route dst 192.168.1.10
    route delete dst 192.168.1.10
    J'ai essayé de faire une expression comme celle ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    my $ip = "[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}";
    my $cole = "[a-zA-Z0-9:_\-]+";
     
     
    ^route\sdelete\ssrc\s($ip)|dst\s($ip)|ncol\s($col)
    Mais bien évidemment le | est "exclusif", c'est à dire qu'il est seulement capable de comprendre des expressions comme celles ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    route delete src 192.168.1.10
    route delete dst 192.168.1.10
    route delete ncol test
    Avez vous une idée pour que ma regexp match tous les exemples d'expressions données ci dessus?

    Merci

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^route\sdelete\ssrc\s($ip)(?:dst\s($ip)|ncol\s($col))?

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 139
    Par défaut
    Merci c'est presque ce que je veux je l'ai un tout petit peu modifier pour que src ne soit pas obligatoire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /^route\sdelete\s(?:src\s($ip)|dst\s($ip)|ncol\s($col))?/
    mais je n'arrive pas a matcher mes variables $2 et $3. Cela est du au. Mais en faisant comme ci dessous, je retombe sur le meme probleme que tout à l'heure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /^route\sdelete\s(src\s($ip)|dst\s($ip)|ncol\s($col))?/
    Egalement, quand je veux empêcher que l'on utilise deux fois le même argument :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    route delete src 1.1.1.1 src 1.1.1.1
    ca ne fonctionne pas non plus Je tourne en rond

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 139
    Par défaut
    ca ne change rien, je n'ai toujours rien dans mes variables $2 (dst) et $3 (ncol)

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    #!/usr/bin/perl;
    use warnings;
    use strict;
     
    my @chaines = (
      'route delete src 192.168.1.10 dst 192.12.23.88 ncol test',
      'route delete src 192.168.1.10 route dst 192.12.23.69 ncol test',
      'route delete src 192.168.1.10',
      'route delete src 192.168.1.10 route dst 192.168.1.22',
    );
    my $ip = "[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}";
    my $cole = "[a-zA-Z0-9:_\-]+";
     
    foreach my $chaine ( @chaines ) {
      my ($ip1, $ip2, $ncol);
      if ( ($ip1, $ip2, $ncol) = $chaine =~ m/^route delete src ($ip) *(?:(?:route)? *dst ($ip)(?: ncol ($cole))?)?/ ) {
          print "$chaine\n";
          print "\tIP1 : $ip1\n" if ($ip1);
          print "\tIP2 : $ip2\n" if ($ip2);
          print "\tNCOL : $ncol\n" if ($ncol);
          print "\n";
      }
    }
    Résultat :
    route delete src 192.168.1.10 dst 192.12.23.88 ncol test
    IP1 : 192.168.1.10
    IP2 : 192.12.23.88
    NCOL : test

    route delete src 192.168.1.10 route dst 192.12.23.69 ncol test
    IP1 : 192.168.1.10
    IP2 : 192.12.23.69
    NCOL : test

    route delete src 192.168.1.10
    IP1 : 192.168.1.10

    route delete src 192.168.1.10 route dst 192.168.1.22
    IP1 : 192.168.1.10
    IP2 : 192.168.1.22

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 139
    Par défaut
    merci beaucoup pour ton aide ca fonctionne

    voici la regexp que je cherchais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m/^route delete (?:src ($ip) *(?:dst ($ip)(?: ncol ($cole))?)?)?/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RegExp] Problèmes expressions régulières
    Par Bluespike62 dans le forum Langage
    Réponses: 34
    Dernier message: 07/02/2006, 12h33
  2. [regexp] pbl expression réguliére et menu déroulant
    Par UNi[FR] dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/06/2005, 09h37
  3. [langage] Ptit Probleme expression réguliere avec perl
    Par Shoot Again dans le forum Langage
    Réponses: 3
    Dernier message: 02/12/2004, 12h44
  4. [langage] problème expression régulière
    Par chtiboss dans le forum Langage
    Réponses: 6
    Dernier message: 05/01/2004, 16h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo