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 :

Petite question sur Encode et regxp


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de scaleo
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 327
    Par défaut Petite question sur Encode et regxp
    Je vient de lire la documentation du module Encode et il semble qu'il ne puisse pas convertir tout les charset en utf-8!!!!!!!

    J'aimerai savoir si c'est le cas ou si j'ai lu de travers ?

    j'ai aussi un autre soucie je n'arrive pas a faire un regxp capable de supprimé dans un string tout les mots en dessous de cinq caractères j'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $var =~ s/[A-Z-a-z]{5,}/ /g;
    mais sa ne donne pas le résultat escompté ainsi que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $var =~ /[A-Z-a-z]{5,}/g;
    ne semble pas marcher non plus!!

    merci et bon codage

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 606
    Par défaut
    J'ai essayé plusieurs trucs, et pareil que toi, j'ai pas au final le résultat recherché

    J'ai essayé avec \w au lieu de [a-zA-Z] et ça ne change pas grand chose à l'histoire

    Note un truc cependant : avec le pattern a-zA-Z, tu ne toperas aucun mot contenant des caractères accentués. Je dis ça juste au cazou

    Bon, Jedai et/ou Pospos, vous êtes où ? Finie l'heure du casse croute !

  3. #3
    Expert confirmé
    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
    Par défaut
    Où as-tu vu que Encode ne peut pas convertir tous les charsets en utf-8 ? (sauf pour les charsets qui n'auraient pas d'équivalent en utf-8)

    Pour supprimer tous les mots en dessous de 5 caractères, ta regex est totalement fausse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    s/\b[A-Za-z]{1,5}\b//g;
    Devrait fonctionner.

    --
    Jedaï

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 606
    Par défaut
    Citation Envoyé par Jedai
    Pour supprimer tous les mots en dessous de 5 caractères, ta regex est totalement fausse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    s/\b[A-Za-z]{1,5}\b//g;
    Devrait fonctionner.

    --
    Jedaï
    Et je dirais même plus, celle-là fonctionne mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s/\b[A-Za-z]{1,4}\b//g;
    J'ai essayé ta regexp Jedai et elle squizzait le mot "salut"

  5. #5
    Expert confirmé
    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
    Par défaut
    Ca dépend de comment on comprend le "en-dessous" de 5 caractères.

    --
    Jedaï

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Par défaut
    il me semble egalement qu'encode n'est pas capable de convertir tous les charsets, mais bon il en connait deja un bon paquet.
    MAis par exemple le module Encode-Detect (basé sur les libs mozilla) peut eventuellement lui proposer des charsets qu'il ne sera pas capable de decoder (d'ou la necessité de toujours mettre ses decode('Detect',...) dans un eval)

  7. #7
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 606
    Par défaut
    Citation Envoyé par Jedai
    Ca dépend de comment on comprend le "en-dessous" de 5 caractères.

    --
    Jedaï

    Mais zencore ? Que veux-tu dire ?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 61
    Par défaut
    L'expression régulière qui convient est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s/\b[A-Z-a-z]{1,4}\b//g
    Le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    use strict;
    my $s="ABCDE A ABCDE B ABCDE C";
    $s =~s/\b[A-Z-a-z]{1,4}\b//g;
    print "$s\n";
    donne le résultat:


  9. #9
    Expert confirmé
    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
    Par défaut
    Citation Envoyé par parsy
    L'expression régulière qui convient est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s/\b[A-Z-a-z]{1,4}\b//g
    Il est recommandé de lire les réponses précédant la sienne avant de répondre, dans ce cas la regex correcte (qui est celle que tu proposes effectivement) a déjà été donnée...
    Bienvenue sur le forum Perl en tout cas.

    --
    Jedaï

Discussions similaires

  1. [ATL] Petite question sur les progress bar
    Par MrMaze dans le forum MFC
    Réponses: 1
    Dernier message: 06/05/2005, 10h40
  2. [Visuel XP] Petite question sur le theme XP...
    Par ZoumZoumMan dans le forum C++Builder
    Réponses: 12
    Dernier message: 20/01/2005, 15h41
  3. petite question sur le composant IBX ...
    Par vbcasimir dans le forum Bases de données
    Réponses: 4
    Dernier message: 05/01/2005, 11h33
  4. Réponses: 3
    Dernier message: 08/12/2004, 14h58
  5. Petite question sur les performances de Postgres ...
    Par cb44 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/01/2004, 14h49

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