Bonjour,
Je fais mes premiers pas avec Perl et j'ai un petit souci d'evaluation d'une expression reguliere pour extraire du code entre deux balises html.
Voici le code que je teste :
et voici ce sur quoi j'applique mon expression reguliere :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 sub lirefic(){ my $fic= $dir.$ligne; if(-f $fic){ print $fic." : \n"; die "ouverture fichier impossible : $!\n" unless open(FIC, $fic); while(<FIC>){ if($_ =~ /<style[^>]+>([^<]+)<\/style>/){ print "$_"; } } close(FIC); } }
Celui çi ne me renvoir que ceci en resultat d'évaluation ( je suis sur Emacs):Code:
1
2
3
4
5
6 <style type="text/css"> html,body{margin:0;padding:0} body{font: 76% arial,sans-serif} p{margin:0 10px 10px} </style>
, mais pas le contenu entre les deux balises.Code:<style type="text/css">^M
Mon expression réguliere me semble correcte puisque ça fonctionne avec PHP ( voir çi dessous). J'ai essayé avec les operateurs 'm' et 's' sans succès. Je pense le l'évaluation butte au passage au premier passage à la ligne.
Qqu'un aurait il une idée ?
Merci d'avance.
riccco
ps un bout de code en PHP qui fonctionne parfaitement sur ce cas:
Code:
1
2
3
4
5
6 function regExtract($f) { if(is_readable($f)){ $contenu = file_get_contents($f);} preg_match('/<style[^>]+>([^<]+)<\/style>/', $contenu, $match); createCssFile($match[1]); }