Bonjour,
Envoyé par
Algo75
Je cherche à réaliser une fonction qui prend deux paramètres, deux chaines de caractères. L'une désigne ce que l'on cherche (et il peut y avoir des wildcard, par exemple *.c) et l'autre la chaine dans laquelle on cherche (par exemple test.c).
Soit c'est pour l'exercice et tu peux réaliser tes propres fonctions, soit c'est une fonction nécessaire pour la suite d'un projet plus grand et, dans ce cas, tourne-toi plutôt vers les globales et les expressions régulières qui ont été étudiées depuis longtemps et qui prennent déjà en charge les cas de figure subtils qui ne sautent pas forcément aux yeux dès le départ.
Je n'ai pas de problèmes pour savoir si une chaine match avec une autre, mais pour compter les combinaisons possibles, je sèche.
Il faut d'abord déterminer une chose : si les motifs se chevauchent, est-ce que tu veux réellement recenser tous les cas possibles ou passer directement à la suite ? Par exemple, si je recherche « aaa » dans la chaîne « aaaaaa », j'ai deux façons de voir les choses :
Cas 1 : on cherche les motifs consécutifs.
Deux solutions possibles :
Cas 2 : on cherche les motifs qui se chevauchent éventuellement.
Quatre solutions possibles :
aaaaaa
aaaaaa
aaaaaa
aaaaaa
Dans le dernier cas, le procédé reste fort simple, il suffit de lancer la recherche à partir du début de la chaîne, puis à partir du caractère suivant, puis à nouveau du suivant, et ainsi de suite jusqu'à la fin de la chaîne, indépendamment des résultats trouvés. Cela dit, avec des expressions complexes, spécialement celles qui contiennent des OU « | », il est possible de manquer des correspondances si on s'arrête à la première correspondance trouvée et que l'on ne vérifie pas la validité des autres motifs.
Partager