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 :

expression reguliere (encore)


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 31
    Par défaut expression reguliere (encore)
    Me revoilà avec mes regexp ...

    Cette fois ci, j'ai une scalar :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    toto (172.18.237.51) at 0:3:ba:4:39:dd permanent published
    et je veux récupérer uniquement l'IP.

    J'ai tenté sans conviction un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $IP_result = "toto (172.18.237.51) at 0:3:ba:4:39:dd permanent published";
    $IP_result =~ s/!([0-9]{1-3}\.[0-9]{1-3}\.[0-9]{1-3}\.[0-9]{1-3})//;
    sans succès biensur.

    Help ?

  2. #2
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Citation Envoyé par nkdb
    Me revoilà avec mes regexp ...

    Cette fois ci, j'ai une scalar :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    toto (172.18.237.51) at 0:3:ba:4:39:dd permanent published
    et je veux récupérer uniquement l'IP.
    L'IP, ici, c'est le machin constitué de chiffres et de points, entouré par des parenthèses, non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $IP_result = "toto (172.18.237.51) at 0:3:ba:4:39:dd permanent published";
    if ($IP_result =~ m/\((.*)\)/) { print "$1\n";' }
    En première approche ...

    Et plus finement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $IP_result = "toto (172.18.237.51) at 0:3:ba:4:39:dd permanent published";
    if ($IP_result =~ m/\(([0-9.]+)\)/) { print "$1\n";' }

  3. #3
    Mr6
    Mr6 est déconnecté
    Membre émérite

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 608
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $IP_result =~ s/.*\((.*)\).*/$1/;
    ca m'aurait l'air pas mal ca, même si un peu crade...

    edit : grillé....

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 31
    Par défaut
    Cool, ca marche.

    J'ai modifié en ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $IP_result =~ s/.*\((([0-9]{1,3}\.){3}[0-9]{1,3})\).*/$1/;
    merci

  5. #5
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Citation Envoyé par Mr6
    edit : grillé....
    Carbonized, même
    Tiens, je vais soumettre un smiley tout noir et qui fume pour ce genre de situation

    Citation Envoyé par Mr6
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $IP_result =~ s/.*\((.*)\).*/$1/;
    ca m'aurait l'air pas mal ca, même si un peu crade...
    Pour l'aspect "un peu crade", j'ai toujours trouvé génante la tendance à utiliser une substitution là où un match avec mémorisation peut suffire.

    Je préfère m/(motif)/ et l'usage subséquent de $1 ou la récupération des correspondance dans une liste, plutôt que le s/.*(motif).*/$1/ qui altère la même variable et interdit tout autre traitement en cas d'évolution du code ...

    C'est un avis personnel et ne faisant absolument aucune sorte d'autorité

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

Discussions similaires

  1. Expression reguliere encore et tojours
    Par calimero642 dans le forum Langage
    Réponses: 4
    Dernier message: 15/03/2006, 17h22
  2. [langage] expression reguliere encore.
    Par lilith dans le forum Langage
    Réponses: 2
    Dernier message: 22/03/2005, 15h33
  3. Réponses: 7
    Dernier message: 16/07/2004, 13h24
  4. [langage] surement une expression régulière...
    Par armada dans le forum Langage
    Réponses: 5
    Dernier message: 30/05/2003, 17h06
  5. [langage] expression reguliere motif répétitif dans 1 pattern
    Par comme de bien entendu dans le forum Langage
    Réponses: 11
    Dernier message: 09/04/2003, 16h14

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