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

Langage Perl Discussion :

soucis de chaine avec des espaces


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 62
    Points : 41
    Points
    41
    Par défaut soucis de chaine avec des espaces
    Salut,

    j'ia une soucis avec une regexp et une chaine avec des espaces.
    en fait j'ai une chaine qui ressemble a ca:

    FastEthernet 0/3 <unassigned> YES up down
    FastEthernet 1/0 10.20.30.2 YES up down
    Loopback 1 10.233.14.72 YES up up

    et moi je veux recupérer ca et a le formater comme ca :

    FastEthernet 0/3 -> FastEthernet0/3
    FastEthernet 1/0 -> FastEthernet1/0
    Loopback 1 -> Loopback 1

    donc j'ai pensé utiliser une regexp mais ca marche pas
    Je fais ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    @resu #tableau qui contient le tableau complet
     
    foreach my $l (@resu){
     
    		if($l =~ /(\S+)\s+/){
     
    			$interface{$1}=$1."".$2;
    		}
    }
    Mais bon cela se semble pas etre la bonne méthode

  2. #2
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @resu #tableau qui contient le tableau complet
    foreach my $l (@resu){
    	if($l =~ /(\S+)\s+/){
    		$interface{$1}=$1."".$2;
    	}
    }
    evite ce genre de nommage de variables $l c'est pas tres clair et propre.
    $interface{$1}=$1."".$2; => $2 n'existe pas vu qu'il n'y a pas de parenthese capturante pour !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    foreach my $ligne_resultat (@resu){
      if($ligne_resultat =~ /(\S+)\s+(.+)/){
    	$interface{$1}=$1.$2;
      }
    }

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 62
    Points : 41
    Points
    41
    Par défaut
    Bon finalement ca marche pas mal j'ai fais ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if($ligne =~ /(\S+)\s+(\S+)\s+/ and $l !~ m/^Interface/ ){
     
    			$interface{$1}=$1.$2;
    		}
    Mnt j'ai un pb si j'ai un tableau comme ca :

    FastEthernet 0/0 <unassigned> YES up up
    FastEthernet 0/1 <unassigned> YES up down
    FastEthernet 0/2 <unassigned> YES up down
    FastEthernet 0/3 <unassigned> YES up down
    FastEthernet 1/0 10.20.30.2 YES up down
    Loopback 1 10.233.14.72 YES up up


    ma regExp va me sortir que une seul fois FastEthernet alors que ben euh il y en a plusieurs ... :-) (Cisco qd tu nous tiens ...)

  4. #4
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    pour commencer, et non
    ça permet d'eviter des soucis.
    De plus, vu que tu fais bah ça veut dire que tu as un hash %interface avec pour cle les $1.
    Or, si à chaque iteration, $1 est identique, bah au final il s'ecrase au fur et à mesure car un hash a toujours des clé uniques

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 62
    Points : 41
    Points
    41
    Par défaut
    ok merci j'ai vu mon erreur !!

    en suite je comprend pas pk il vaut mieux faire le premier encadré que tu as marqué ?

  6. #6
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Citation Envoyé par glouffy6
    ok merci j'ai vu mon erreur !!

    en suite je comprend pas pk il vaut mieux faire le premier encadré que tu as marqué ?
    pour le ^

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 62
    Points : 41
    Points
    41
    Par défaut
    ouep, mais je croi sque le ^ est la pour faire une recherche que sur le début de la chaine non ?

  8. #8
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    exactement

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 62
    Points : 41
    Points
    41
    Par défaut
    merci bcp, ca commence a rentrer dans ma ptite tete les reg exp, mais bon chuis pas trop malin comme gars et vu que mes collègues veulent pas m'aider, faut bien que je vous embete un peu


  10. #10
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    J'ai réfdigé la FAqpour ça, regarde dedans

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 62
    Points : 41
    Points
    41
    Par défaut
    oui oui j'y avais jeté un oeil deja c'est pour ca que j'avais trouvé le début de la "solution", mais aps le tout, je suis ecnore trop boulet pour ca

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

Discussions similaires

  1. récupérer une chaine de caractères avec des espaces
    Par doubiste_59 dans le forum Langage
    Réponses: 4
    Dernier message: 20/07/2010, 15h17
  2. Chaine de caractères avec des espaces
    Par totoff80 dans le forum Débuter
    Réponses: 18
    Dernier message: 12/04/2008, 16h12
  3. Réponses: 6
    Dernier message: 16/03/2007, 15h25
  4. [VB.NET] Compléter une chaine avec des espaces
    Par Lois dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/03/2005, 09h09
  5. Réponses: 2
    Dernier message: 06/12/2002, 07h50

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