Récupérer une plage de donnée entre deux "titres" variables.

Akre66 Messages postés 57 Statut Membre -  
[Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Je cherche à récupérer sur un fichier texte, des valeurs comprises entre deux "titres".

Exemple:
Titre 1
AAAA
AAAA
Titre 2
AAAA
AA
AAAA
Titre 3
...

Donc j'ai pensé à réaliser une grep de la forme:
@sortie=grep{$_=~/$Titre[$n]/.../$Titre[$n+1]/}@entree;1



Et ça ne marche pas.
Si je rentre la valeur exacte entre des titres, ça marche.

Donc je voulais savoir s'il y avait une manière de palier ce problème ?
Ou si vous avez une autre idée.

1 réponse

  1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Salut,

    Ce que tu veux faire n'est pas très clair, mais si ce que tu veux c'est capturer dans un tableau ce qui est entre les "Titre n", y compris ce qui est après le dernier (qui n'a donc rien à la suite), tu peux faire comme cela :

    #!/usr/bin/perl
    
    use strict;
    use warnings;
    
    use Data::Dumper;
    
    $_ = "Titre 1                                                                                                                                                                                                      
    AAAA
    AAAA
    Titre 2
    AAAA
    AA
    AAAA
    Titre 3
    ...";
    
    my @array = /Titre \d+(.*?)(?=Titre \d+|$)/sg;
    
    print Dumper(@array);


    Cela donne un tableau à 3 éléments comme cela :

    $VAR1 = '
    AAAA
    AAAA
    ';
    $VAR2 = '
    AAAA
    AA
    AAAA
    ';
    $VAR3 = '
    ...';

    Dal
    0
    1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
       
      ou
      my @array = /Titre \d+\n(.*?)(?=\nTitre \d+|$)/sg;
      pour éviter la capture des retours à la ligne, si tu n'en veux pas.


      Dal
      0