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 :

expression reguliere alphanumérique


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 110
    Par défaut expression reguliere alphanumérique
    Bonjour,
    j'essai de faire une expression réguliere qui accepte 5 ou 8 caractéres alphanumérique.
    J'ai essayé :
    /[a-zA-Z0-9]{5}|[a-zA-Z0-9]{10}/
    mais ça marche pas.
    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    L'expression pour matcher exactement 5 ou 8 caractères est la suivante :

    /\b(\w{5}|\w{8})\b/

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    perl -E '@a = map ".".("a" x $_).".", 1 .. 10; print map "$_\n", grep /\b(\w{5}|\w{8})\b/, @a;'
    .aaaaa.
    .aaaaaaaa.
    \b sert à matcher un "word boundary", c'est à dire une pseudo-chaine de taille zéro (une assertion) correspondant à une transition entre un caractère \w et un caractère \W (ou inversement).

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 110
    Par défaut
    Merci beaucoup. ça fonctionne parfaitement

  4. #4
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Juste un petit point: \w reconnaît non seulement [a-zA-Z0-9] mais aussi le caractère '_' (soulignement ou underscore).

    "67_AB" sera donc aussi reconnu par l'expression régulière de Philou, alors que ce n'était pas le cas avec celle de Chezdevelopping.

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    C'est vrai que j'ai utilisé \w sans faire cette précision. Je l'ai surtout fait comme raccourci.

    Ceci signifie aussi que \b se basant sur \w et \W, intègrera également le _ dans la recherche de frontière de mot (_ étant intégré dans le mot, et non dans le "non mot" ; ceci implique qu'un _ ne pourra pas servir de frontière de mot entre deux caractères alphanumériques strict).

    La classe de caractère alpha-numérique peut être également définir ainsi : [:alnum:]

    Ainsi, au sens strict, si l'on souhaite exclure le soulignement des mots, l'expression régulière deviendrait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     perl -E '@a = map "._".("a" x $_).".", 0 .. 10; print map "$_\n", grep /[^[:alnum:]]([[:alnum:]]{5}|[[:alnum:]]{8})[^[:alnum:]]/, @a;'

Discussions similaires

  1. [langage] [Expression][Régulière] motif
    Par Cyspak dans le forum Langage
    Réponses: 4
    Dernier message: 23/09/2003, 14h24
  2. [langage] [debutant] expression reguliere
    Par toto_titi dans le forum Langage
    Réponses: 3
    Dernier message: 01/07/2003, 09h45
  3. Réponses: 2
    Dernier message: 16/06/2003, 15h15
  4. [langage] surement une expression régulière...
    Par armada dans le forum Langage
    Réponses: 5
    Dernier message: 30/05/2003, 17h06
  5. [langage] expression reguliere motif répétitif dans 1 pattern
    Par comme de bien entendu dans le forum Langage
    Réponses: 11
    Dernier message: 09/04/2003, 16h14

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