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 :

Regex captures et boucles


Sujet :

Langage Perl

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 90
    Points : 242
    Points
    242
    Par défaut Regex captures et boucles
    Bonjour à tous,

    Je tourne en rond sur un problème de capture dans une regex
    Dans le code ci-dessous je souhaite capturer la taille d'un fichier, provenant d'une log, pour l'insérer dans deux variables différentes suivant qu'il s'agisse d'image ou de musique.
    Le problème est que la variable $1 de la capture ne se réinitialise pas dans la deuxième boucle, et conserve donc la valeur de la première...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    foreach $ligne(@result){
    		if ($ligne =~ /$user/){
    			if ($ligne =~ /[\.png|\.jpg]/i){
    				$ligne =~/.+\sroot\sroot\s([0-9]*)\s/;
    				$totalImages = $totalImages+$1;
    			}
    			if ($ligne =~ /[\.mp3|\.m4a|\.wav]/i){
    				$ligne =~/.+\sroot\sroot\s([0-9]*)\s/;
    				$totalMusique = $totalMusique+$1;
    			}
    		}
    	}
    Si quelqu'un peut m'aiguiller, merci d'avance

  2. #2
    Membre éprouvé Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Points : 1 050
    Points
    1 050
    Par défaut
    remplace tes crochets par des parenthèses dans les if:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($ligne =~ /[\.png|\.jpg]/i){
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($ligne =~ /(\.png|\.jpg)/i){
    cf la FAQ pour une explication
    Nous les geeks, c'est pas qu'on a une case en moins, c'est juste qu'on compte à partir de zéro.
    Plus les choses changent, plus elles restent les mêmes

Discussions similaires

  1. [RegEx] [Regex] Capturer du texte pour l'interpreter
    Par LaChips60 dans le forum Langage
    Réponses: 4
    Dernier message: 31/05/2011, 14h10
  2. regex : capture d'accents - \p{L} ne marche pas
    Par Phonatacid dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 23/04/2009, 10h38
  3. Posix regex : capture d'une sous chaine
    Par flo_k dans le forum C
    Réponses: 1
    Dernier message: 10/06/2008, 18h36
  4. [RegEx] Capture - La regex s'arrête trop tôt
    Par Huntress dans le forum Langage
    Réponses: 3
    Dernier message: 31/01/2007, 12h37
  5. Regex + Array + Boucles
    Par Girzi dans le forum Langage
    Réponses: 10
    Dernier message: 22/09/2006, 17h12

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