En Perl : Récuperer un texte entre 2 balises

Tribute2U Messages postés 52 Statut Membre -  
Zep3k!GnO Messages postés 2049 Statut Membre -
Bonsoir, je souhaiterai connaitre le code en Perl permettant de récupérer un texte contenu entre 2 balises (HTML, PHP, ...).
Merci d'avance

4 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,
    #! /usr/bin/perl
    
    use warnings;
    @ARGV = qw (/home/lamitest/affich-2168110-en-perl-recuperer-un-texte-entre-2-balises.htm);
    
    while (<>){
      /<([^>]*)>/;
    print "$1\n";
    }
    

    ____________________________________________________________
    !DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    html
    head
    META NAME="ROBOTS" content="index,follow"
    META NAME="subject" content="Comment ça marche? [L'informatique] - <? echo Forum programmation ?
    ................................
    ...........................
    
    Cependant ce n'est pas complet. Entre 2 balises on peut avoir des chaînes de caracteres entre " " entre ' ', on peut avoir aussi '>'.
    0
  2. Zep3k!GnO Messages postés 2049 Statut Membre 200
     
    entre 2 balises...
    Moi la je comprends plutot : <test>ce qu'on veut lire </test>
    Si c'est ca, le /<([^>]*)>/; devient :
    /<[^>]+>([^<]+)</;
    


    En tous cas, a voir, je ne sais plus si il ne faut pas mettre des \ avant les > et < .. a test
    ;D
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Salut,

      tu as raison. J'ai mal interpreté.

      De toute façon c'est assez complexe.

      Par exemple
      <balise>a recuperer</balise><balise1>encore
      à recuperer</bailse2><balise3>on a x < y à recuperer</balise3>



      lami20j
      0
      1. Zep3k!GnO Messages postés 2049 Statut Membre 200 > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
         
        <balise3>on a x < y à recuperer</balise3>
        j'avoue ce cas la est bien relou..
        Mais je pense qu'il y a p'tet moyen en mettant un
        /\<[^\>]+\>([^{\<\/}]+)\<\//;
        

        je ne suis plus bien sur des {} poir définir un ensemble de caractères...
        et j'ai remis les \ devant les < et > car il les faut...
        mais c'est a voir
        -
        Zep3k!GnO
        On est des rangers mec, des rangers...
        0
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    c'est pour ça que c'est complex.
    Entre les balises et à l'intérieur des balises on peut avoir n'importe quoi ou presque.

    Donc personnellement quand je travaille avec du texte brut je préfère regarder la structure de texte et de ne pas travailler à l'aveugle.

    Pour les cas que tu as imagine ta regex doit fonctionner, en revanche elle ne va pas fonctionner dans les cas dont tu n'as pas penser.

    Bonne soirée,

    lami20j
    0
  4. Zep3k!GnO Messages postés 2049 Statut Membre 200
     
    en revanche elle ne va pas fonctionner dans les cas dont tu n'as pas penser.
    normal :D je l'ai faite en speed, comme ça..(sans trop y réfléchir 3 piges.. j'avoue :P )
    Aller, bonne journée, @+
    0