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] probleme de regex


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 69
    Points : 60
    Points
    60
    Par défaut [langage] probleme de regex
    Bonjour

    voici mon probleme,

    Je fais une recherche sur un fichier pour obtenir tous les paths d'un projet, ce qui donne apres tri et elimination des doublons un truc comme çà :


    c:\bibi\bobo
    c:\popo
    d:\kiko\kiki\kika
    d:\kiko\kiki\
    d:\kiko\kiki\kika\kuko
    etc..

    une fois j'ai lister tout les repeertoires lors du premier passe de lecture du fichier je refais une seconde passe pour lister toutes les erreurs pour chaques directory mais le problemes est au niveau de ma regex,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if ( $FileLine =~ /^(.*): error (\d{1,4})(.*)$/ && $FileLine =~ /'$Folder'/)
          {
    ou folder contient la patern recherche du style d:\kiko\kiki\kika\ mais le probleme si j'utilise cette regex le test est aussi valide pour d:\kiko\kiki\kika\kuko, car il contient bien la patern, comment lui dire nan juste ca !!

    les lignes a analyses sont de ce type :

    --- Module: Z:\bibi\source\libraries\baseclasses\arrmessagehandlerbase.cpp
    CArr_ArrMessageHandlerBase();
    _Z:\bibi\source\libraries\baseclasses\arrmessagehandlerbase.h:42: error 1918 (Note): empty prototype for member declaration, assumed '(void)'

    virtual bool initialize();
    _Z:\bibi\source\libraries\baseclasses\arrmessagehandlerbase.h:45: error 1918 (Note): empty prototype for member declaration, assumed '(void)'

    CArr_MessagingBase * getTaskInstance();
    _Z:\bibi\source\libraries\baseclasses\arrmessagehandlerbase.h:48: error 1918 (Note): empty prototype for member declaration, assumed '(void)'

    # _error "Your compiler version is not recognized by STLport. Please edit <config/stl_mycomp.h>"
    Z:\bibi\source\include\stlport\config\stl_mycomp.h:33: error 309 (Error): # error "Your compiler version is not recognized by STLport. Please edit <config/stl_mycomp.h>"

    en faite aussi pour ma regex je recupere les parametre $1 $2 etc...
    dc les parentheses sont utliles...
    donc si vous avez une idée pour alleger ma regex et rechercher ce que je veux, j'espere avoir été assez claire..

    sinon je suis pret à repondre a toute les questions.


    Ludo

  2. #2
    Membre du Club
    Inscrit en
    Août 2004
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 50
    Points : 60
    Points
    60
    Par défaut
    Pourquoi pas chercher pas '$Folder', mais '$Folder\\\w+\.\w+' ? Cela veut dire que $Folder est suivi par un nom de fichier à l'extension non-vide (.h, .c etc). Il est probable que tu n'aies pas de répértoires avec des extensions -- donc, c'est le filtre.

  3. #3
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 69
    Points : 60
    Points
    60
    Par défaut
    je te remercie quand meme

    En faite c po vraiment mon probleme en faite comme je veux chercher une repertoire je veux pas prendre les repertoire pere etc... en compte

    donc si j'ai
    \pipo\pipi\popu
    \pipo\pipi

    quand je fais une recherche sur \pipo\pipi, je ne veux pas qu'il me compte les ereurs de \pipo\pipi\popu car pou lui il a trouvé le pater dans cette chaine..

    je te remercie

    bye
    Ludo

  4. #4
    Jeh
    Jeh est déconnecté
    Membre actif Avatar de Jeh
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 203
    Points : 250
    Points
    250
    Par défaut
    à la place de $folder, essaie

  5. #5
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 69
    Points : 60
    Points
    60
    Par défaut
    en faite j'ai trouvé mon bonheur avec ca

    /^($Folder\\[^.\\]+.(?:h|cpp|c))\d+):\serror\s(\d+)(.*)$/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [langage] autre probleme de regex
    Par Ludo167 dans le forum Langage
    Réponses: 3
    Dernier message: 18/08/2004, 17h01
  2. [langage] probleme avec un hash de hash
    Par planetevoyage dans le forum Langage
    Réponses: 4
    Dernier message: 06/06/2003, 12h55
  3. Réponses: 3
    Dernier message: 07/04/2003, 20h06
  4. Réponses: 6
    Dernier message: 04/04/2003, 15h28
  5. [langage]Problème de temps de lecture, optimisation
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 08/01/2003, 08h47

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