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

Fermé
Akre66 Messages postés 55 Date d'inscription mercredi 14 mai 2014 Statut Membre Dernière intervention 4 octobre 2016 - 27 juin 2014 à 11:39
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 30 juin 2014 à 11:17
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.


A voir également:

1 réponse

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 30/06/2014 à 10:55
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
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 30/06/2014 à 11:20
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