Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1735 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  probleme avec la fin de la ligne

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme avec la fin de la ligne

n°2244393
celine2000
Posté le 28-11-2014 à 23:01:45  profilanswer
 

salut
j'ai un fichier texte que je dois filtrer. pour supprimer les mots ayant 3 caractères j'utilise l'expression régulière
 while($line =~ m/ [0-9a-zA-Z_][0-9a-zA-Z_][0-9a-zA-Z_] /) {$line=~ s/ [0-9a-zA-Z_][0-9a-zA-Z_][0-9a-zA-Z_]/ / ;}
 
ca marche sauf pour les fins de lignes puisque j'ai pas d'espace à la fin.
meme en utilisant l'expression
while($line =~ m/ [0-9a-zA-Z_][0-9a-zA-Z_][0-9a-zA-Z_]\n /) {$line=~ s/ [0-9a-zA-Z_][0-9a-zA-Z_][0-9a-zA-Z_]/ / ;}  
ca donne des erreurs

mood
Publicité
Posté le 28-11-2014 à 23:01:45  profilanswer
 

n°2244413
gilou
Modérateur
Modzilla
Posté le 29-11-2014 à 01:23:29  profilanswer
 

A la base, ce que vous voulez faire, c'est s/\b\w{3}\b//g;
A vous de traiter ensuite si nécessaire les blancs multiples générés par un effacement de mot.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --    In umbra igitur pugnabimus. --
n°2244423
celine2000
Posté le 29-11-2014 à 07:03:23  profilanswer
 

votre code marche bien mieux que le mien.
encore une petite question  :whistle:  
je dois filtrer mon texte et pour cela j'utilise une liste de mots à supprimer et j'écris le code suivant:
 
if( $line =~ m/la | les | des | eu | mon | mes | euh |euh | ou / ) { $line =~ s/la | les | des | eu | mon | mes | euh |euh |ou / / ;}
 
vous avez peut etre une autre suggestion à me proposer ?
 
merci

n°2244440
gilou
Modérateur
Modzilla
Posté le 29-11-2014 à 15:38:57  profilanswer
 

Je procéderais ainsi:
 
1) mettre mes mots a virer comme une regexp
2) transformer une ligne en liste de mots (split), la filtrer avec grep pour en retirer les mots à virer et réassembler les mots en ligne (join)
 

Code :
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4.  
  5. my $line = 'la petite fleur des Alpes';
  6. my $remove = '('.join('|', qw(la les des eu mon mes euh ou)).')';
  7.  
  8. my $re = qr{$remove}o;
  9. $line = join('', grep(!/^$re$/, split /\b/, $line));
  10. $line =~ s /( )+/ /g;
  11. print $line;


 
Si on est sur que l'on n'a que des mots séparés par des blancs (pas de tab ou autres séparateurs unicode) on peut faire plus simple (mais ça bouffe les \n de fin de phrase, qu'on peut rajouter en fin de traitement si nécessaire):

Code :
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4.  
  5. my $line = 'la petite fleur des Alpes';
  6. my $remove = '('.join('|', qw(la les des eu mon mes euh ou)).')';
  7.  
  8. my $re = qr{$remove}o;
  9. $line = join(' ', grep(!/^$re$/, split ' ', $line));
  10. print $line;


 
A+,


Message édité par gilou le 29-11-2014 à 15:47:13

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --    In umbra igitur pugnabimus. --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  probleme avec la fin de la ligne

 

Sujets relatifs
[Excel 2007] Problème pour trouver le nombre de ligne d'une feuilleProbleme JAVA en ligne de commande
[VBA Excel 2003] - Problème pour récupérer la 65537° ligne d'un CVSProblème de mise en ligne d un site local
Problème mise en ligne de mon site, suis je un boulet ???problème retour à la ligne
Probleme avec une ligne,dont je ne comprend pasVBA calculette, probleme de ligne !
probleme saut de ligne avec scanfFlash et CSS, template en ligne qui ne marche pas
Plus de sujets relatifs à : probleme avec la fin de la ligne


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR