IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

suppression de tous les mots de moins de 3 caracteres


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 96
    Points : 67
    Points
    67
    Par défaut suppression de tous les mots de moins de 3 caracteres
    Bonjour,
    j'ai un script perl qui doit me supprimmer tous les mots de 3 lettres et moins.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =~s/ .{1,3} / /gi;
    mais si j'ai un texte du type " de le " cela ne marche pas car il me prend l'espace comme fesant partie des trois caractere.

    Merci

  2. #2
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Pourquoi ne pas utiliser les "classes" de caractères dans l'expression rationnelle ?

    \w = caractères de mot (alphanum + _)
    \s = caractère d'espacement (blanc, tabulation, ...)

    Ca donnerait un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $var =~s/\s\w{1,3}(?=\s)//g
    Il y a une petite subtilité, car on teste la présence d'un caractère final d'espacement, sans l'inclure au motif trouvé. Ce qui fait qu'on peut continuer la recherche globale depuis avant cet espacement, d'une part, et d'autre part effectuer un remplacement par un motif vide.
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 96
    Points : 67
    Points
    67
    Par défaut
    merci, je n'avais pas pense au classes de caracteres.

  4. #4
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Pour éviter les problèmes que peuvent poser une expression telle que "fin.", on peut remplacer les "\s" par des "\b" (qui matche une frontière de mot, c'est-à-dire le passage (de longueur 0 donc) entre un caractère de mot et un non-caractère de mot, ou vice-versa) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $var =~s/\b\w{1,3}\b//g
    --
    Jedaï

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Suppression de tous les enregistrements
    Par Bouillon dans le forum Bases de données
    Réponses: 4
    Dernier message: 07/11/2006, 22h44
  2. Récupérer tous les mots d'une chaine de caractère
    Par steps5ive dans le forum Access
    Réponses: 2
    Dernier message: 05/09/2006, 15h14
  3. [RegEx] Trouver tous les "/mot" dans une chaîne
    Par micatmidog dans le forum Langage
    Réponses: 7
    Dernier message: 31/03/2006, 12h07
  4. Réponses: 5
    Dernier message: 18/01/2006, 14h05
  5. Suppression de tous les fichiers textes d'un répertoire
    Par Cathy dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 20/09/2005, 17h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo