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 PHP Discussion :

Regex sur un retour d'exec()


Sujet :

Langage PHP

  1. #1
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut Regex sur un retour d'exec()
    Bonjour,

    Je voudrais extraire une chaine qui correspond au retour d'execution d'un diff sous UNIX. Je voudrais récuppérer uniquement la partie qui indique les lignes concernées.

    Pour exemple, diff fichier.txt fichier2.txt -B ( pour éliminer les blancs ) :

    5c3,4
    < blablabla
    ---
    > o pinaise
    > olalala
    Cela signifie que la ligne 5 ( qui contenait "blablabla" ) de fichier.txt a été modifié par les lignes de 3 à 4 ( "o pinaise", "olalala" ) du fichier2.txt

    Et c'est uniquement cette partie là que je souhaite récupérer.
    Logiquement, les nombres dépendent du nombre de ligne, et peuvent donc être infinis.

    QQchose du genre :

    123,123A123,123

    Donc si j'ai compris un peu le principe des REGEX, ça donne qqchose du genre :
    [0-9]+ [0-9|,]? [0-9]+ [a-Z] [0-9]+ [0-9|,]? [0-9]+

    Mais ça n'est pas tout à fait ce que je souhaite, tous les cas ne sont pas gérés :S
    Malgré ça, ça ne marche quand même pas
    Mon code pour l'instant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function fileDiff() {
     
    	$tabDiff = array() ; 
    	$tabFichierSRC = array() ;
    	$tabFichierSRC = file('./Trunk/Projet1/test.txt') ; // On stocke le contenu du fichier source dans la tableau tabFichierSRC
    	$tabDiff = array_values(preg_grep('`^[0-9]\d+[0-9|,]\d?[0-9][a-Z][0-9]\d+[0-9|,]\d?`', $tabFichierSRC )) ;
     
    	return $tabDiff ;
    }
    Mais mon expression régulière `^[0-9]\d+[0-9|,]\d?[0-9][a-Z][0-9]\d+[0-9|,]\d?` n'est pas bonne, du moins, elle ne fonctionne pas :S

    QQun voit-il où ça cloche ?


    EDIT:Honte sur moi.....[0-9] suffit à lui même, le résultat du diff en ligne par ligne c'est ou un chiffre, et dans ce cas la séquence que je cherche, soit un chevron pour indiquer une différence, soit un '-' pour changer de différence.

  2. #2
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Euh, j'ai trouvé l'expression régulière mais j'ai malgré tout une erreur récurrente : il ne me renvoie dans mon tableau UNIQUEMENT la première occurence :S

Discussions similaires

  1. Réponses: 8
    Dernier message: 23/09/2006, 17h29
  2. Regex sur adresse IP
    Par lobiman dans le forum Langage
    Réponses: 5
    Dernier message: 12/09/2006, 16h46
  3. Réponses: 6
    Dernier message: 27/07/2006, 17h24
  4. [Configuration] Pb sur le retour à la page précédente...
    Par Sophy75 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 12
    Dernier message: 13/04/2006, 11h28
  5. VBA Word - Aide sur les "Retours" dans tableaux
    Par wouebmaster dans le forum VBA Word
    Réponses: 5
    Dernier message: 29/12/2005, 10h08

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