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 :

[langage] expressions régulières


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 11
    Points : 4
    Points
    4
    Par défaut [langage] expressions régulières
    Bonjour à tous,
    mon projet consiste à se connecter à différent routeur, je place le hostname du routeur dans une variable que je nomme $hostname.

    Lorsque je lance des commandes sur le routeur, j'ai besoin de rechercher le hostname de celui-ci en tant que expression régulière.

    j'ai essayé la commande suivante, mais ça ne marche pas :

    if ($var =~ /$hostname/)

    est ce que quelqu'un pourrait m'y éclairer.

    Merci

  2. #2
    Membre actif Avatar de Gamdwin
    Inscrit en
    Avril 2005
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 186
    Points : 207
    Points
    207
    Par défaut
    Lorsque je lance des commandes sur le routeur, j'ai besoin de rechercher le hostname de celui-ci en tant que expression régulière.
    Je n'ai pas compris ce que tu voulais dire.
    As-tu des exemples ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( $var =~ /$hostname/ )
    Ceci recherche "$hostname" dans la chaîne "$var".
    Je ne sais pas si c'est le comportement que tu attends.

    EDIT : j'ai corrigé une faute d'inattention.
    "I hate quotations. Tell me what you know." (Ralph Waldo Emerson)

  3. #3
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    Il suffit tout simplement d'effectuer le test suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while(<TON_FICHIER>){
    if(/$hostname/){
    #Traitement
    }
    }
    A noter que la ligne en cours est récupérée dans la variable par défaut $_ et on teste la regexp directement sur $_ sans pour autant la mentionner.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  4. #4
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    voici un exemple, je me connecte à un routeur qui pour hostname:
    MONOPAR024LC2601

    je place ce nom dans la variable $hostname (je ne peux pas faire la recherche d'expression régulière sur MONOPAR024LC2601, car ce nom est pour un routeur, et le script est destiné à plusieurs routeurs de noms différent)

    la question est comment faire pour que $var recherche dans l'expression qui est dans la variable $hostname

  5. #5
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    Tu recherches bien ce routeur quelque part ? Dans un fichier par exemple ? Car là, je ne te suis plus trop. Donnes un peu plus de détails.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  6. #6
    Membre actif Avatar de Gamdwin
    Inscrit en
    Avril 2005
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 186
    Points : 207
    Points
    207
    Par défaut
    voici un exemple, je me connecte à un routeur qui pour hostname:
    MONOPAR024LC2601

    [...]

    la question est comment faire pour que $var recherche dans l'expression qui est dans la variable $hostname
    Eh bien :

    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
    # Pour les besoins de l'exemple :
    my $hostname = "MONOPAR024LC2601";
    my $var = "PAR024";
     
    if ( $hostname =~ /$var/ )
    {
       # Vrai avec notre exemple
    }
     
    $var = "PAR025";
     
    if ( $hostname =~ /$var/ )
    {
       # Dans notre exemple, ne rentrera pas ici
    }
    "I hate quotations. Tell me what you know." (Ralph Waldo Emerson)

  7. #7
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    à priori je me suis mal exprimé.
    au fait pour l'exemple que j'ai donné tout à l'heure, le nom de routeur était: MONOPAR024LC2601pour un autre routeur par ex, le nom est :
    AGESSTD001LC1401et même le LC, n'est pas systématique, il y en a d'autre sans le LC.
    au fait la régle de nomenclature des routeurs est assez arbitraire, pour cela, je voudrai savoir si on peut chercher une expression régulière à partir d'une variable et non à partir d'une expression.

    et merci pour votre aide.

  8. #8
    Membre actif Avatar de Gamdwin
    Inscrit en
    Avril 2005
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 186
    Points : 207
    Points
    207
    Par défaut
    au fait la régle de nomenclature des routeurs est assez arbitraire, pour cela, je voudrai savoir si on peut chercher une expression régulière à partir d'une variable et non à partir d'une expression
    Deux cas de figures : soit tu souhaites rechercher s'il y a au moins une occurence du contenu de "$var" dans "$hostname", et dans ce cas je t'invite à relire ma précédente réponse (dans laquelle l'exemple que j'ai mis n'est que cela : un exemple)...

    ... soit j'ai toujours rien compris à ce que tu veux faire.
    "I hate quotations. Tell me what you know." (Ralph Waldo Emerson)

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Bonjour,

    J'ai peur que l'on ne se comprenne que très partiellement, pour le moment ...

    Citation Envoyé par BENCHEKROUN
    à priori je me suis mal exprimé.
    ...
    je voudrai savoir si on peut chercher une expression régulière à partir d'une variable et non à partir d'une expression.
    Je rappelle qu'une variable est mise en correspondance avec une expression rationnelle, qui n'est pas autre chose qu'un motif de recherche dans la variable.

    Ce qui fait que "chercher une expression régulière à partir d'une expression" ne me parait pas très clair ... Je suis vraiment navré de pinailler et de jouer sur les mots, mais c'est, je crois, le meilleur moyen pour que l'on finisse par se comprendre.

    Maintenant, une expression rationnelle peut aussi être constituée à partir d'autres variables.

    Peux-tu expliquer davantage ta dernière phrase, s'il te plait, éventuellement en l'illustrant d'un exemple simple (avec des "ABCD", "EFGH", enfin, pas un cas réel).

    Merci d'avance.
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  10. #10
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    merci pour votre implixcation,
    en réponse à Gamdwin, d'après ta propostion je pense que tu as compris mon problème, mais en revenant à l'exemple explicatif que tu m'avais donné, à savoir


    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
    # Pour les besoins de l'exemple : 
    my $hostname = "MONOPAR024LC2601"; 
    my $var = "PAR024"; 
     
    if ( $hostname =~ /$var/ ) 
    { 
       # Vrai avec notre exemple 
    } 
     
    $var = "PAR025"; 
     
    if ( $hostname =~ /$var/ ) 
    { 
       # Dans notre exemple, ne rentrera pas ici 
    }
    même dans le cas où $var="PAR024" le code n'entre pas dans le if, et c'est ce que je n'arrive pas à comprendre

    Edité par GLDavid. Merci de penser aux balises codes !

  11. #11
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    Comment ca ? Il marche très bien le code proposé par Gamdwin.
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par BENCHEKROUN
    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
    # Pour les besoins de l'exemple : 
    my $hostname = "MONOPAR024LC2601"; 
    my $var = "PAR024"; 
     
    if ( $hostname =~ /$var/ ) 
    { 
       # Vrai avec notre exemple 
    } 
     
    $var = "PAR025"; 
     
    if ( $hostname =~ /$var/ ) 
    { 
       # Dans notre exemple, ne rentrera pas ici 
    }
    même dans le cas où $var="PAR024" le code n'entre pas dans le if, et c'est ce que je n'arrive pas à comprendre
    Chez-moi (ActivePerl 5.8, sous XP), ce code est parfaitement fonctionnel ... avec un print ajouté dans chaque if pour en être sûr ... je rentre bien dans le premier if ... et cela devrait aussi être ton cas !!!
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  13. #13
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    On est donc 2 à voir que le code de Gamdwin fonctionne (et avec les même tests, c'est beau la télépathie entre modo ).
    BENCHEKROUN, quelle est ton erreur ?

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

Discussions similaires

  1. [langage] [expression reguliere] : syntaxe
    Par arcane dans le forum Langage
    Réponses: 8
    Dernier message: 25/09/2003, 13h03
  2. [langage] [Expression][Régulière] motif
    Par Cyspak dans le forum Langage
    Réponses: 4
    Dernier message: 23/09/2003, 14h24
  3. [langage] expression regulier et test
    Par toto_titi dans le forum Langage
    Réponses: 5
    Dernier message: 16/07/2003, 17h41
  4. Réponses: 2
    Dernier message: 16/06/2003, 15h15
  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