Perl + expressions régulières

Fermé
syl - 11 juin 2010 à 15:04
 syl - 12 juin 2010 à 17:19
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);
A voir également:

1 réponse

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
12 juin 2010 à 07:50
hello
il fonctionne chez moi
 $ cat a3
111
babil (noun):kinderpraat
222
$ 
$ ./p5 a3
babil (noun):kinderpraat

$
0
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
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié par dubcek le 12/06/2010 à 16:00
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
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
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié par dubcek le 12/06/2010 à 16:32
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
ç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