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 :

Problème avec une expression régulière


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 62
    Points : 43
    Points
    43
    Par défaut Problème avec une expression régulière
    Salut, je suis débutant en Perl et je rencontre un soucis au niveau d'une expression régulière, si qqun peut m'aider, merci d'avance . . .

    mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    my $cpuline = `top -n1 | grep Cpu`;
    # => ceci met "Cpu(s):  6.4%us,  0.4%sy,  0.0%ni, 83.1%id, 10.1%wa,  0.0%hi,  0.1%si,  0.0%st" dans $cpuline
     
    if($cpuline =~ /(\d{1,2})(\.)(\d)(\%)(us)/xi)
    {
            print "$1  $2  $3  $4  $5";       # => me permet seulement de tester si ça marche ou pas
            print "\nOK\n";
    }
    Là mon expression régulière ne fonctionne pas . . . comme s'il trouvait pas ce que je cherche : un simple pourcentage

    J'ai remarqué par contre que si je met ma cpuline en dur , au lieu de la prendre dynamiquement avec un top . . . il trouve bien mon 6.4%us . . .

    Je pige pas . . .

    Ah oui, ça me fait la même chose avec ma ligne mémoire . . .

  2. #2
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    personnellement, je l'aurais plus écrit comme ça (les options x et i ne servent à rien ici d'ailleurs):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ($cpuline =~ m/^Cpu\(s\):\s*(\d+\.\d+\%us)/)
    {
            print "$1\n";       # => me permet seulement de tester si ça marche ou pas
            print "\nOK\n";
    }

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

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 62
    Points : 43
    Points
    43
    Par défaut
    oui ça marche . . . si je mets la ligne Cpu en dur pour tester l'expression régulière . . . mais pas si je la récupère depuis un top . . .

  4. #4
    Membre habitué Avatar de rcageot
    Profil pro
    rien
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 170
    Points
    170
    Par défaut
    t'as essayé de regarder si le top ne te renvoie pas par hasard des caractères de contrôle comme séparateur dans ta variable ?
    genre \t ou autre ?
    Si un ricard vaut un steak, j'ai bien bouffé une vache hier soir !
    L'art de poser les bonnes questions dans les forums afin de ne pas passer pour un

  5. #5
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    Citation Envoyé par Darkroro
    oui ça marche . . . si je mets la ligne Cpu en dur pour tester l'expression régulière . . . mais pas si je la récupère depuis un top . . .
    Essaie de faire un chomp sur la variable cpuline après l'avoir récupérée, juste pour voir !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    my $cpuline = `top -n1 | grep Cpu`;
    chomp($cpuline);

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

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 62
    Points : 43
    Points
    43
    Par défaut
    ça y est ça marche . . . enfin . . . plus ou moins . . . j'ai viré le "us" et là tout fonctionne . . .

    petit question now :

    mon expression régulière c'est /(\d{1,2}\.\d\%)/

    comment je fait pour récupérer tous les pourcentage de ma "cpuline" sans devoir répéter 7 fois la recherche ?

  7. #7
    Membre habitué Avatar de rcageot
    Profil pro
    rien
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 170
    Points
    170
    Par défaut
    essaye

    my @prct = ($cpuline =~ m/(\d{1,2}\.\d\%)/g);
    Si un ricard vaut un steak, j'ai bien bouffé une vache hier soir !
    L'art de poser les bonnes questions dans les forums afin de ne pas passer pour un

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 62
    Points : 43
    Points
    43
    Par défaut
    Ok merci . . .

Discussions similaires

  1. problème avec une expression régulière
    Par Jasmine80 dans le forum Langage
    Réponses: 3
    Dernier message: 07/12/2009, 11h53
  2. Réponses: 0
    Dernier message: 28/04/2009, 09h00
  3. [c# REGEX]Problème avec une expression régulière
    Par mezzo_998 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 24/11/2007, 13h03
  4. Problème avec une expression régulière ?
    Par MaTHieU_ dans le forum Delphi
    Réponses: 1
    Dernier message: 28/04/2007, 18h50
  5. [RegEx] problème avec une expression régulière
    Par sissi25 dans le forum Langage
    Réponses: 2
    Dernier message: 19/04/2007, 09h12

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