uwildmat — Compare une chaîne de caractère avec une expression.
fr.*,@fr.test
uwildmat(3) compare une chaîne de caractère avec une expression, et si la chaîne de caractère valide le motif, renvoie Vrai.
Une expression peut être constituée de plusieurs motifs séparé par une virgule (,).
Un motif simple est constitué soit de caractères (qui validera l'occurrence de ce caractère) soit des méta-caractères suivants :
valide un seul caractère quel qu'il soit.
valide une série de caractère qui peut être nulle.
supprime la signification de n'importe quel méta caractère qui le suit.
une liste de caractère qui valide un seul caractère de la liste.. le tiret (-) peut être utilisé pour indiquer un intervalle ([a-z] validera donc n'importe quelle lettre) l'antislash (\) n'a aucune signification particulière dans une liste, pour inclure un crochet nous devons donc le mettre en début de liste, et pour le tiret le mettre en fin de liste.
valide un seul caractère qui n'est pas dans la liste.
Un motif peut être négatif si il est précédé d'un point d'exclamation (!) signifiant alors que la chaîne de caractère ne doit pas valider ce motif. Un motif peut être négatif et empoisonné si il est précédé d'une arobase (@) signifiant alors que la chaîne de caractère ne doit pas valider ce motif. La différence entre arobase et point d'exclamation réside dans le signal de non validation (techniquement l'arobase renverra UWILDMAT_POISON et le point d'exclamation UWILDMAT_FAIL)
Lors du test , la chaîne de caractère est testé pour les différents motifs en commençant par la gauche. Pour que la chaîne de caractère valide un motif, il faut que le premier caractère valide le début du motif et ainsi de suite jusqu'à la fin de la chaîne qui doit valider la fin du motif ( "bavardages" validera "b*" ou "*a*" mais pas a tout seul).
Si aucun motif n'est valide, le résultat de la comparaison est négatif. Sinon le résultat de la comparaison est déterminé par le motif valide le plus à droit. Si celui ci est négatif ( précédé d'un point d'exclamation), la comparaison est négatif, sinon positive. la chaîne "fr.misc.bavardages.linux" validera donc l'expression "*", l'expression "comp.*,fr.*" (grâce au second motif) mais pas "fr.*,!fr.misc.*" (le second motif est négatif), mais finalement validera "fr.*,!fr.misc.*,fr.misc.bavardages.*" (grâce au troisième motif)
L'expression "!fr.misc.*" ne validera rien car soit le motif n'est pas validé, soit il est négatif, l'expression doit donc être remplacée par "*,!fr.misc.*" qui aura le comportement voulu.