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 :

Script PERL et expressions rationnelles


Sujet :

Langage Perl

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 34
    Points : 27
    Points
    27
    Par défaut Script PERL et expressions rationnelles
    Bonjour,

    je suis débutant en PERL et je coince avec les expressions rationnelles.

    Voila mon souci, je récupère via une variable une ligne sur laquelle je ne veux récupérer que les chiffres.

    Cette ligne est de cette forme : Number of addresses: 3054

    Comment faire avec PERL pour ne récupérer que les chiffres, c'est à dire dans notre exemple 3054.

    D'avance merci pour votre aide.

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 63
    Points : 75
    Points
    75
    Par défaut
    Citation Envoyé par specialfox Voir le message
    Cette ligne est de cette forme : Number of addresses: 3054

    Comment faire avec PERL pour ne récupérer que les chiffres, c'est à dire dans notre exemple 3054.
    Salut à toi !

    Je me souviens, les expressions rationnelles, quelle misère c'est au début. En pratiquant tu verras ça coulera tout seul. En attendant voilà quelque chose qui devrait fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/usr/bin/perl
     
    use strict;
    use warnings;
     
    my $ligneDuFichier = "Number of adress: 3054";
     
    if($ligneDuFichier =~ /[\w\s]*:\s*(\d+)/){
    	print "$1";}
    Laisse moi expliquer l'expression.

    • \w => Ceci permet d'identifier un mot
    • \s => Cet opérateur ci signifie un espace (n'importe quel type d'espace, une tabulation est un espace
    • \d => Identifie un chiffre entre 0 et 9
    • ----------
    • * => Cet opérateur ci permet de dire "0 ou plusieurs fois"
    • + => Permet de dire "1 ou plusieurs fois"


    Une expression rationnelle se définie à l'intérieur de /ICI L'EXPRESSION/.

    En premier lieu j'ai placé [\w\s]*, cela signifie un mot -\w- suivit d'un espace -\s-, je les ai ensuite placé entre crochets afin d'en faire un groupe.
    J'ai rajouté le caractère * à la suite afin de signifier que ce groupe se répète une ou plusieurs fois.

    Les : sont dans ton exemple, j'ai donc supposé que toutes tes lignes possédaient ce séparateur entre phrase et chiffres (si ce n'est pas le cas, remplace le par : . -Signifie n'importe quel caractère-)

    Ensuite j'ai fait en sorte de récupérer ton nombre. Pour cela j'ai écrit : \s*(\d+). \s* au cas ou il y ait un espace placé avant le nombre (note le * qui signifie 0 ou plusieurs fois) et pour finir, la partie qui t'interesse réellement :

    (\d+), les parenthèses servent, dans les expressions rationnelles à récupérer dans des variables prédéfinies par le langage ($1, $2, $3 etc... en PERL) ce qui est placé entre elles.
    Ainsi ce bout d'expression signifie que tu va placer dans la variable $1 les chiffres.
    Le + suivant le \d est important car \d ne récupère qu'un chiffre, grâce au + tu les récupère tous.

    Je te donne un lien assez complet sur le sujet des expressions rationnelles qui pourras t'aider :

    http://perl.enstimac.fr/DocFr/perlretut.html

    Je ne dit pas que cette expression est la plus performante mais après 2-3 tests elle fonctionne, si tu as des soucis n'hésite pas.

    En espérant que ma réponse te convienne et Bonne chance !

Discussions similaires

  1. [langage] Expressions rationnelles (perl/C)
    Par ma2th dans le forum Langage
    Réponses: 11
    Dernier message: 02/08/2004, 18h07
  2. [langage] Script Perl Aide
    Par julfra dans le forum Langage
    Réponses: 7
    Dernier message: 17/05/2004, 09h55
  3. [langage] script perl cmd system
    Par kacedda dans le forum Langage
    Réponses: 4
    Dernier message: 02/05/2003, 09h45
  4. [langage] awk et sed dans script perl
    Par scoti dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2003, 18h26
  5. Réponses: 2
    Dernier message: 11/07/2002, 08h31

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