probleme avec la fin de la ligne - Perl - Programmation
Marsh Posté le 29-11-2014 à 01:23:29
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+,
Marsh Posté le 29-11-2014 à 07:03:23
votre code marche bien mieux que le mien.
encore une petite question
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
Marsh Posté le 29-11-2014 à 15:38:57
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 :
|
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 :
|
A+,
Marsh Posté le 28-11-2014 à 23:01:45
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