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

Shell et commandes GNU Discussion :

Validité d'une chaine de caractere


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2021
    Messages : 3
    Par défaut Validité d'une chaine de caractere
    Bonjour,

    Je suis un débutant avec le shell j'aimerais tester une chaîne de caractère si elle contient uniquement
    des lettres, des chiffres, et des caractères ., _ et -. sachant que cette dernière ne dois pas contenir le point au début
    pour le moment j'ai ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     echo $chaine | grep -E  '([[:alnum:]] [.,-_])*'  
        if [ "$?" -eq 0 ];then  
            echo 'ok' 
    fi

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 686
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 686
    Par défaut
    Bonjour,

    tu devrais lire le man 7 regex

    tu dois indiquer quels caractères peuvent commencer la chaîne, puis répéter cette expression en y ajoutant le point.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 103
    Par défaut
    La regex que tu donnes '([[:alnum:]] [.,-_])*' veut plus ou moins dire (en emacs/rx):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    (rx (zero-or-more
            (sequence
                alnum
                space
                (any ".,-_"))))
    c'est-à-dire une séquence contenant un et un seul alnum, suivi d'une et une seule espace, suivie d'un et un seul caractère parmi ".,-_", cette sequence complète étant répétée 0 ou plusieurs fois, comme, par exemple "a _b .0 -", mais pas "abc".

    Il me semble que le "-" doit être le 1er caractère juste après le crochet, comme "[-ae]" qui veut dire n'importe quel caractère parmi "-" "a" et "e":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ grep -o -E '[-ae]' <<< "0a3eb--c"
    a
    e
    -
    -

    sinon il indique un intervalle entre 2 caractères, comme "[a-e]" qui veut dire n'importe quel caractère dont le code ascii est compris entre celui du "a" et celui du "e", c'est-à-dire parmi "a", "b", "c", "d" et "e":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ grep -o -E '[a-e]' <<< "0a3eb--c"
    a
    e
    b
    c

Discussions similaires

  1. Réponses: 9
    Dernier message: 06/11/2007, 13h36
  2. Réponses: 5
    Dernier message: 21/07/2004, 20h34
  3. Extraire un nom d'une chaine de caractere
    Par iamspacy dans le forum Linux
    Réponses: 4
    Dernier message: 03/05/2004, 22h34
  4. Réponses: 2
    Dernier message: 30/03/2004, 12h31
  5. Controler une chaine de caracteres ou d'entiers?
    Par Le druide dans le forum C
    Réponses: 6
    Dernier message: 25/09/2003, 09h48

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