[Perl] récuperation de chaine

sasame Messages postés 2 Statut Membre -  
 sasame -
Bonjour,

Je cherche une expression reguliere qui puisse ranger dans une variable, une chaine de caractere qui se trouve entre 2 chaines.

ex :

Probleme Description:
Tout est planter(test)

Resolution.

j'ai esseyer ça:

push @description, $1 if /Probleme Description\s+([Resolution]+)^/;


mais ça marche pas ça ne va pas chercher a la ligne suivante.
Si quelqu'un connaissai l'astuce, ça me serai grandement utile.

Merci.

3 réponses

  1. sefo
     
    Je voudrai bien t'aider mais je ne comprends absoluement rien a ce que tu dis...

    Dans un fichier tu as:

    Probleme description:
    chaine a recuperer
    Resolution:
    chaine a recuperer

    et tu veux recuperer "chaine a recuperer"
    c'est bien ca?

    [code]

    #!/usr/bin/perl
    use strict;
    my $next=0;
    my $fichier="fichier.txt";
    my $chaine1="probleme description";
    my $chaine2="resolution";
    open(FILE,"$fichier") || die "Error: $!\n";
    flock(FILE, 2) || die("Can't flock file - $!\n");
    chomp(@lines = <FILE>);

    foreach my $line (@lines) {
    if ($next==1) {
    #ici tu fais ce que tu veux avec ta chaine
    $next=0;
    }
    if ($line eq $chaine1) {
    $next=1;
    }
    if ($line eq $chaine2) {
    $next=1;
    }
    }
    close (FILE);
    exit 0;

    [/code]
    0
  2. sasame
     
    Merci mais je cherche plus une solution qui tienne avec une expresion reguliere.

    Ce que je veux fait c'est recupérer la chaine "tout est planté" qui se trouve entre "Problem Description:" et "Resolution".

    J'ai esseyer une tonne d'expression reguliere mais rien n'y fait.

    Une solution serai de supprimer les retours à la ligne du fichier, ça serai plus facile après pour extraire les chiane que je souhaite
    0