expr. reg et recursivité

expr. reg et recursivité - Perl - Programmation

Marsh Posté le 15-07-2008 à 17:19:14    

bonjour,
 
j'ai une expression du type /$motif/s, ou $motif contient des parenthèses capturantes.
 
ce motif parse un tableau HTML
 
Ma cible contient plusieurs fois le $motif  (comme si il y avait plusieurs du tableau)
 
J'aimerais boucler sur chaque resultat du $motif comme ca :

Code :
  1. while ($text =~ (/$motif/s) ) {
  2.     print my_trim($1),";";
  3.     print my_trim($2),";";
  4.     print my_trim($3),";";
  5.     print my_trim($4),";";
  6.     print my_trim($5),"\n";
  7.     die;
  8.   }


 
Mais, ca ne marche pas de cette manière apparemment, car ca boucle indéfiniment  (pour cela que j'ai mis un die)
Comment faire ?
Ou bien, sans le while, est-ce que je peux avoir comme resultat un tableau de tableau de mes $1, $2, $3... ?
 
Pour tout vousdire je veux prendre ca :

Code :
  1. <p>Profil 1</p>
  2. <table>
  3.   <tr>
  4.     <td>Motif</td>
  5.     <td>val1</td>
  6.   </tr>
  7.   <tr>
  8.     <td>Nombre de paires</td>
  9.     <td>4</td>
  10.   </tr>
  11. </table>
  12. <p>Profil 2</p>
  13. <table>
  14.   <tr>
  15.     <td>Motif</td>
  16.     <td>val2</td>
  17.   </tr>
  18.   <tr>
  19.     <td>Nombre de paires</td>
  20.     <td>2</td>
  21.   </tr>
  22. </table>


 
(en fait, le code HTML est bien plus compliqué que ca, mais c'est dans le même esprit)
et en faire un csv comme ca :
Profil 1;val1;4
Profil 2,val2;2
 
Merci

Reply

Marsh Posté le 15-07-2008 à 17:19:14   

Reply

Marsh Posté le 16-07-2008 à 09:05:16    

Code :
  1. while ($text =~ (/$motif/s) ) {
  2.     print my_trim($1),";";
  3.     print my_trim($2),";";
  4.     print my_trim($3),";";
  5.     print my_trim($4),";";
  6.     print my_trim($5),"\n";
  7.     die;
  8.   }


A vue de nez, $text n'est pas modifié dans ton corps de boucle while, il n'est donc pas surprenant que tu aies une boucle infinie.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 16-07-2008 à 09:45:19    

Y'a moyen de voir ta fonction print_my_trim ?
Je suis persuadé qu'elle est améliorable :o


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 16-07-2008 à 17:03:48    

en fait, j'ai trouvé
il fallait mettre m/$motif/sg
 
my_trim fait du s//g pour supprimer du html qui serait en trop..
Merci quand même

Reply

Sujets relatifs:

Leave a Replay

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