Bonjour à tous, et d'avance toute mes excuses pour le dérangement.
Je suis actuellement sur un problème ou je m'arrache les cheveux, et n'en ayant plus beaucoup, j'appelle à l'aide.
en BASH, j'ai une variable de longueur variable dans laquelle je dois vérifier les caractères et la valider en fonction d'un PATTERN
entre autre, je dois accepter dans ce PATTERN le crochet fermant ]
J'ai donc une fonction que je vous simplifie comme suit :
Si dans le PATTERN, je retire le \] Ca fonctionne parfaitement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 function test() { local _String=${1}; local _LengthMin=${2}; local _LengthMax=${3}; local _Return=false; local _PATTERN="^([a-zA-Z0-9_&#@%!:/;,<>\.\{\}\|\+\(\)\$\*\?\[\]-] {${_LengthMin},${_LengthMax}})$"; [[ ${_String} =~ ${_PATTERN} ]] && _Return=true; echo ${_Return}; } function test2() { local _String=${1}; local _LengthMin=${2}; local _LengthMax=${3}; local _Return=false; local _PATTERN="^([a-zA-Z0-9_&#@%!:/;,<>\.\{\}\|\+\(\)\$\*\?\[-] {${_LengthMin},${_LengthMax}})$"; [[ ${_String} =~ ${_PATTERN} ]] && _Return=true; echo ${_Return}; } # Appel de la fonction test() titi=$(test "9854139qdb@[$;,DHF564" 12 50); # Retourne false à cause du \] toto=$(test2 "9854139qdb@[$;,DHF564" 12 50); # Retourne Retourne true mais pas de \] dans le PATTERN tutu=$(test "9854139qdb@[$;,DHF]564" 12 50); # Retourne false à cause du \] tata=$(test2 "9854139qdb@[$;,DHF]564" 12 50); # Retourne false --> normal le PATTERN ne prend pas les ]
par contre, s'il y a un crochet dans la chaine envoyée, ça ne fonctionne naturellement plus. Or le crochet fermant, fait parti des caractères acceptables ...
Mais dès que le \] est dans le masque du PATTERN, la fonction retourne false quoi qu'il se passe.
D'ou ma petite question, comment échapper ce */+)e!§+ ce "]" pour qu'il soit pris en compte dans le masque autorisé.
Vous remerciant par avance de votre aide.
Bonne journée à tous
Partager