Re: Regexp multiline

Top Page

Reply to this message
Author: Edgar Bonet
Date:  
To: guilde
Subject: Re: Regexp multiline
> J'ai essayé des trucs comme :
> preg_grep ('#^pf: .+\(match\): pass (out|in) on (\n|.)+^pf:.+$#sm', $logs,
> PREG_GREP_INVERT);
> Mais cela ne matche pas.
>
> Je suis en PHP, mais c'est un problème de regexp.


Je ne crois pas que tu puisses t'en sortir comme ça, facilement, sans
farie de boucle. preg_grep() va examiner chaque ligne de tes logs,
indépendamment des autres, et va décider uniquement en fonction de ce
qu'il y a dans la ligne en question.

Je ferais une boucle explicite :

$logs = array(
     'ligne 1 à conserver',
     'ligne 2 à supprimer',
     'ligne 3 qui vient juste après',
     'ligne 4 à conserver'
);
$pattern = '/à supprimer/';


$filtered = array();
for ($i = 0; $i < count($logs); $i++) {
     if (preg_match($pattern, $logs[$i]))
         $i++;                       # skip this line and next line
     else
         array_push($filtered, $logs[$i]);   # save line
}


print_r($filtered);

Edgar.