Perl + expressions régulières

syl -  
 syl -
Bonjour,

SVP pourquoi le programme et expression regul. ci-dessous n'arrive pas a me trouver une ligne telle que :

babil (noun):kinderpraat

************

#!/usr/bin/perl

use strict; #utilise les données déclarées
#use LWP::Simple; check this on man
my $ligne;
my $clean;
my $pos;
my $cleaner;
my $txt;

open(FILEINPUT,"$ARGV[0]") || die "erreur de lecture de fichier :$!";
while ($ligne=<FILEINPUT>){
if ($ligne =~ /^[a-z][a-z]*\s\(.*\)\:[a-z][a-z]*/){

#$clean=$1;
#print $clean;
print "$ligne\n";
}

#$clean=$ligne;
#$clean=~s/"[a-z][a-z]*//g;
#$clean=~s/\^[a-z][a-z]*//g;
}

close(FILEINPUT);

1 réponse

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    il fonctionne chez moi
     $ cat a3
    111
    babil (noun):kinderpraat
    222
    $ 
    $ ./p5 a3
    babil (noun):kinderpraat
    
    $
    
    0
    1. syl
       
      Comment avez vous fait car pour moi en sortie j'ai un fichier vide?

      par exemple si je fait sur cygwin

      perl prog.pl text.txt > sortie.txt

      le fichier sortie est vide bien que le fichier text.txt contient les données sur lesquelles je souhaite appliquer le programme.

      Merci
      0
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      cygwin, c'est Windows, je suis sur Linux, peut être des problèmes de fin de lignes ?
      open(FILEINPUT,"$ARGV[0]") || die "erreur de lecture de fichier :$!"; 
      while ($ligne=<FILEINPUT>){ 
      print "$ligne"; 
      }

      affiche bien tout le fichier ?
      0
    3. syl
       
      Je n'ai pas compris votre question - que voulez vous dire par affiche bien tout le fichier?

      Toutefois si je reduis l'exp. regul. à /^[a-z][a-z]*/ j'arrive à avoir une sortie ce qui me fait penser que peut être le problème commence sur \s dans cette expression regul.

      /^[a-z][a-z]*\s\(.*\)\:[a-z][a-z]*/
      0
    4. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      oui, il faut aller pas par pas, me demande était de tester sans l'expression.
      essaye de remplacer, dans le script et dans le fichier \s et l'espace par X
      essayer aussi ( plutot que \(
      0
    5. syl
       
      ça ne marche tjr pas. Je vais reessayer encore plus tard. J'aurais besoin après de faire d'autre manipulation avec le script et pour l'instant je n'ai pas trouvé comment faire.

      Par exemple sur une ligne comme:

      babiller (verb):babbelen;kleppen;kletsen" bébé(noun):brabbelen

      Pour avoir

      babiller (verb): babbelen
      babiller (verb): kleppen
      babiller (verb): kletsen
      babiller (noun):brabbelen


      Aurais vous une idée comment je peux proceder, si je peux utilier "if" les expressions regul. un tableau?
      0