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 ) :
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.txt5c3,4
< blablabla
---
> o pinaise
> olalala
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 :
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
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 ; }
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.
Partager