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 :
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);
}
} |
et voici ce sur quoi j'applique mon expression reguliere :
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> |
Celui çi ne me renvoir que ceci en resultat d'évaluation ( je suis sur Emacs):
<style type="text/css">^M
, mais pas le contenu entre les deux balises.
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:
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]);
} |
Partager