Script perl ...

Script perl ... - Programmation

Marsh Posté le 06-12-2001 à 14:40:02    

bonjour tout le monde,
 
mon probleme est le suivant :
je voudrais creer un script qui transforme toutes les balises d un fichier html
<span class="UneClasse"> ...(il peut y avoir n importe quoi) </span>
en
<h1> ...(il peut y avoir n importe quoi) </h1>
 
j'essaie de faire ca avec les expressions regulieres de perl mais je n arrive pas a gerer le cas ou le
<span class="UneClasse"> et le </span> ne sont pas sur la même ligne ...
bien evidement, je ne peux traiter que les couples <span </span>, car il y a des </span> qui ne sont pas associés a <span class="UneClasse">  
 
 
exemple :
<span class="UneClasse"> aaa
bbb
ccc
</span>
 
et je voudrais obtenir ca :
<h1> aaa
bbb
ccc
</h1>
 
si tu vous avez une idée ...
 
merci beaucoup d'aance

Reply

Marsh Posté le 06-12-2001 à 14:40:02   

Reply

Marsh Posté le 06-12-2001 à 14:46:05    

Je crois que l'option de recherche m te permet de traiter ta chaine comme une seule ligne...
Jette un oeil aux options de recherche...


---------------
Le plus long des voyages commence par le premier pas. LAO-TSEU
Reply

Marsh Posté le 06-12-2001 à 14:53:05    

oui je connais, j essaie d utiliser qqchose du style  
 
s///gmi;  
 
donc je connais le m, mais personne n'a jamais réussi a m expliquer comme cette option marchait ...
 
donc si quelqu un connait ou a une autre solution ...

Reply

Marsh Posté le 06-12-2001 à 15:05:36    

Je ne peux pas te dire grand chose d'autre, je n'ai aucun moyen de tester en PERL (dont je ne connais pas bien la syntaxe), c'est juste que j'ai l'habitude de traiter en PHP avec des Regexp "Compatibles PERL", mais ça s'arrête là...


---------------
Le plus long des voyages commence par le premier pas. LAO-TSEU
Reply

Marsh Posté le 06-12-2001 à 15:49:59    

ah non, c l'inverse, faut utiliser l'option s qui traite ton texte comme une seule ligne ! :D
 
-> s/<span>(.*?)</span>/<h1>$1</h1>/gsi

Reply

Marsh Posté le 06-12-2001 à 15:50:33    

script bla.pl :

#!/usr/bin/perl
while(<STDIN> ) {
        $ch = $_;
        $ch =~ s/<span(.*)>/<h1$1>/gmi;
        $ch =~ s/<\/span>/<\/h1>/gmi;
        print $ch;
}

 
ficher span :

<span class="UneClasse"> aaa
bbb
ccc
</span><span class="UneClasse"> aaa
bbb
ccc
</span>

 
 
 
exec :
perl bla.pl < span > h1
 
fichier h1:

<h1 class="UneClasse"> aaa
bbb
ccc
</h1><h1 class="UneClasse"> aaa
bbb
ccc
</h1>


---------------
I'm too old for this shit.
Reply

Marsh Posté le 06-12-2001 à 15:50:40    

l'option s autorise simplement le . à compter aussi en tant que \n

Reply

Marsh Posté le 06-12-2001 à 15:53:20    

heu... mon exemple il est po bon (navait po bien compris le pb !), mais pour l'option, c bien ça ! :D

Reply

Marsh Posté le 06-12-2001 à 15:55:37    

je vais tester ca ... merci beaucoup a tous ...

Reply

Marsh Posté le 06-12-2001 à 17:01:52    

minusplus a écrit a écrit :

heu... mon exemple il est po bon (navait po bien compris le pb !), mais pour l'option, c bien ça ! :D  




Oui tout à fait, tu as raison pour l'option m et s, je me suis trompé...
Toutes mes excuses...


---------------
Le plus long des voyages commence par le premier pas. LAO-TSEU
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed