On souhaite sélectionner seulement des mots en minuscules pouvant intégrer des chiffres et les caractères '-' et '_' : les autres caractères spéciaux, les accents ou ponctuations ne sont pas acceptés.
Ci-dessous l'expression rationnelle souhaitée:
^([_a-z0-9-])+( {1}([_a-z0-9-])+)*$
Exemples de chaînes valides:
mot deux mots _mot-valide 1_autre_mot_valide une autre phrase a 7 mots valides
Exemples de rejets :
la chaine commence par un espace ou contient de multiples espaces . des accents sont présents dans la chaine de la ponctuation aussi est rejetee! les caractères accentués ou spéciaux $ sont rejetés
Pour utiliser correctement l'expression rationnelle depuis bash avec grep, utiliser l'argument -P (--perl-regexp):
echo "exemple de chaine rejeté" | grep -P '^([a-z])+( {1}([a-z])+)*$'