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] Les 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] Les expressions régulières
    Bonjour à tous,
    je suis entrain de developper un script, et je voudrai examiner une expression, qui à chaque fois peut comporter des caractères différents, mais se termine toujours par le symbole '>'
    et à ce propos pour une commande waitfor, je veux attendre une chaine quelconque mais qui se termine par >

    Merci de votre aide.

  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 Re: LES EXPRESSIONS REGULIERES
    Citation Envoyé par BENCHEKROUN
    je suis entrain de developper un script, et je voudrai examiner une expression, qui à chaque fois peut comporter des caractères différents, mais se termine toujours par le symbole '>'
    et à ce propos pour une commande waitfor, je veux attendre une chaine quelconque mais qui se termine par >
    La question est... ?
    "I hate quotations. Tell me what you know." (Ralph Waldo Emerson)

  3. #3
    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
    la question est comment examiner une chaine de caractère pour savoir si elle finit par le symbole > ou pas.

  4. #4
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if ( $variable =~ />$/ )
    {
       # La chaîne se termine par '>'
    }
    else 
    {
       # Pas de '>' en fin de chaîne
    }
    "I hate quotations. Tell me what you know." (Ralph Waldo Emerson)

  5. #5
    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
    La réponse est8)

    Le symbole $ dans une expression rationnelle désigne la fin de chaine.

    Bonne continuation.

    P.S. Peux-tu éditer le sujet de ton message initial pour remplacer les majuscules par des minuscules, s'il te plait ? Cela facilitera la lecture du forum et ne laissera pas croire que tu es en train de crier . Merci d'avance.
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  6. #6
    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 ton message, 2Eurocents

    le seul souci, est que le traitement de chaine que j'ai à faire n'est pas sur un if, mais sur un waitfor dans le module Net::Telnet, et donc à priori, je ne peux utiliser l'opérateur =~.
    auras-tu un conseil à me donner?

  7. #7
    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
    Tiré de l'aide de CPAN :

    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
     
    waitfor - wait for pattern in the input
    $ok = $obj->waitfor([Match      => $matchop,]
                            [String     => $string,]
                            [Binmode    => $mode,]
                            [Errmode    => $errmode,]
                            [Telnetmode => $mode,]
                            [Timeout    => $secs,]);
     
    This method reads until a pattern match or string is found in the input stream. All the characters before and including the match are removed from the input stream.
     
    [...] 
     
    You can specify more than one pattern or string by simply providing multiple Match and/or String named parameters. A $matchop must be a string representing a valid Perl pattern match operator. The $string is just a substring to find in the input stream.
     
    [...]
     
    Of course don't forget about regexp metacharacters like ., [, or $. You'll only need a single backslash to quote them. The anchor metacharacters ^ and $ refer to positions in the input buffer.
    Si j'ai bien compris, tu peux passer un pattern regexp à waitfor.
    Ce pattern est donc ">$".
    "I hate quotations. Tell me what you know." (Ralph Waldo Emerson)

  8. #8
    Membre actif
    Inscrit en
    Février 2005
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 167
    Points : 203
    Points
    203
    Par défaut
    Citation Envoyé par Gamdwin
    ]Si j'ai bien compris, tu peux passer un pattern regexp à waitfor.
    Ce pattern est donc ">$".
    Ça doit être ça. Et si c'est pas ça, c'est

    N

  9. #9
    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 le message qu'il me sort :

    missing opening delimiter of match operator in argument "qr/>$/" given to Net::Telnet::waitfor() at test.pl line 29

  10. #10
    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
    Fais voir la manière dont tu appelles waitfor() ?
    "I hate quotations. Tell me what you know." (Ralph Waldo Emerson)

  11. #11
    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
    Voici le message qu'il me sort :

    missing opening delimiter of match operator in argument "qr/>$/" given to Net::Telnet::waitfor() at test.pl line 29
    A voir le message, je dirai qu'il faut passer "/>$/". Essaies ...

    En effet : "missing opening delimiter of match operator" signifie "Délimiteur ouvrant l'opérateur de correspondance manquant"

    Or, les délimiteurs, ce sont les / / avec lesquels on délimite habituellement les expressions rationnelles.

    S'il ne les trouve pas, c'est probablement qu'il s'attend à ce que la chaine commence par eux (supposition à 2 centimes).

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

  12. #12
    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
    malheureusement, qd je l'enléve, voilà ce qu'il me sort :


    pattern match read eof at test2.pl line 29

    sachant que la ligne 29 est celle de :

    $session_telnet->waitfor('/>$/');

  13. #13
    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
    Essaie, pour tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $session_telnet->waitfor(-match => '/>$/');

    (plein d'exemples d'utilisation de waitfor() sur CPAN de Net::Telnet )
    "I hate quotations. Tell me what you know." (Ralph Waldo Emerson)

Discussions similaires

  1. [langage] erreur expressions régulières
    Par perlaud dans le forum Langage
    Réponses: 4
    Dernier message: 08/06/2004, 14h25
  2. Bug dans les expressions régulières ?
    Par SergioF dans le forum Linux
    Réponses: 8
    Dernier message: 12/05/2004, 15h14
  3. [langage] problème expression régulière
    Par chtiboss dans le forum Langage
    Réponses: 6
    Dernier message: 05/01/2004, 16h08
  4. [langage] les sous programmes
    Par giverny dans le forum Langage
    Réponses: 6
    Dernier message: 21/07/2003, 19h24
  5. [langage] [debutant] expression reguliere
    Par toto_titi dans le forum Langage
    Réponses: 3
    Dernier message: 01/07/2003, 09h45

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