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 :

Probleme de RegeXp


Sujet :

Langage Perl

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 210
    Points : 99
    Points
    99
    Par défaut Probleme de RegeXp
    J'ai un gros problème de regexp , je les utilisent pour nettoyer du texte mais les lettre non ASC-II comme é à sont supprimé .

    voici mon script de teste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/usr/bin/perl -w
    my $m = " métà è à ô î û â !!!!!!!!!!!!!!!!!!!!!!!!!!! --------- ?? welcome to jamrock \" 0 1 2 3 4 5 6 7 8 9 158895 ¦ [maison] <> < q<  >>>> {google}² & ~ # ' { ( [ - | ` _ \ ^ @ ] ° ) = } + - * / ¨ $ £ ¤ µ % ! § : ; . , ? ";
       $m = quotemeta($m);
       $m =~ s/\W/ /gi;
       $m =~ s/\d/ /gi;
       $m =~ s/_/ /g;
       $m =~ s/^\s+//g;
       $m =~ s/\s+/ /g;
    print "$m\n"
    De plus le problème est que le texte n'est pas forcement en français mais en allemand , chinois etc ..

    Auriez vous une solution ?

  2. #2
    tfe
    tfe est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 85
    Points : 95
    Points
    95
    Par défaut
    remplace ton

    $m =~ s/\W/ /gi;
    par
    $m =~ s/[^\p{IsWord}\s]//g;
    , l equivalent POSIX

  3. #3
    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
    Tu peux aussi essayer simplement de rajouter "use locale;" en haut de ton script.

    --
    Jedaï

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 210
    Points : 99
    Points
    99
    Par défaut
    Merci a vous Jedai et Tfe .

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 210
    Points : 99
    Points
    99
    Par défaut
    J'ai oublier un ti truc , je souhaite supprimé les caractères isolé j'ai tenté la chose avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $m =~ s/\s\w{1,2}\s/ /g;
    mais ce n'est pas parfait en effet si j'ai un teste comme ceci :

    A ma maman chérie
    ma seras supprimé mais pas
    A
    car il n'y a pas d'espace avant lui

  6. #6
    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
    Au lieu d'utiliser "\s", utilise plutôt "\b" qui est zero-width (de largeur nulle) et repère les frontières (boundaries) des mots. Autrement dit, \b matche au-début et à la fin des mots (plus exactement entre un \w et un \W).

    --
    Jedaï

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 210
    Points : 99
    Points
    99
    Par défaut
    Mici Jedai

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

Discussions similaires

  1. Utilisation de Matcher et Pattern, probleme de Regexp
    Par -ULK- dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 16/02/2009, 06h18
  2. Probleme de regExp
    Par Beleg dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 03/11/2008, 13h58
  3. [RegExp] problème de regexp
    Par carlos20 dans le forum Langage
    Réponses: 13
    Dernier message: 06/12/2005, 13h52

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