![]() |
chercher des sous-chaines dans une chaine et dans l'ordre - Version imprimable +- N-PN White-Hat Project (https://dev.n-pn.fr/forum) +-- Forum : Programmation (https://dev.n-pn.fr/forum/forumdisplay.php?fid=72) +--- Forum : Langages interprétés (https://dev.n-pn.fr/forum/forumdisplay.php?fid=27) +--- Sujet : chercher des sous-chaines dans une chaine et dans l'ordre (/showthread.php?tid=3600) |
chercher des sous-chaines dans une chaine et dans l'ordre - gruik - 20-03-2014 bon dit comme ça c'est peut-être pas très parlant, j'ai : - d'un coté la chaine STR = "titi toto coincoin bouzin gruik pouet toto bouzin gruik bouzin" - de l'autre une liste/un tableau de mots ARRAY = "toto", "bouzin", "pouet" je veux à chaque fois que dans STR on trouve un mot qui appartient à ARRAY effectuer une action, disons appeller la fonction FUNC(), le tout dans l'ordre de la chaine, c'est à dire à l'exécution ça doit donner un truc comme ça : Code : str = "titi toto coincoin bouzin gruik pouet toto bouzin gruik bouzin" si possible de manière élégante en Perl (parcequ'y a toujours moyen d'être élégant avec Perl), sinon au moins en pseudo-code des idées ? RE: chercher des sous-chaines dans une chaine et dans l'ordre - ark - 20-03-2014 Yop En python, je ferrais un truc comme : Code PYTHON :
Mais bon ça génère un tableau... x) RE: chercher des sous-chaines dans une chaine et dans l'ordre - gruik - 20-03-2014 oui forcément en python ici y'a moyen de faire très simple ![]() mais pour le coup je le code en perl donc je peux pas astucer de la même façon qu'en python, je gère nettement moins le langage ;p RE: chercher des sous-chaines dans une chaine et dans l'ordre - Junky - 20-03-2014 Un truc dans le genre: Code PERL :
EDIT: hummm viens de m'appercevoir qu'il manque un truc... :/ Junky, RE: chercher des sous-chaines dans une chaine et dans l'ordre - fr0g - 20-03-2014 En python (en restant sur du code "générique" vu que les tricks/fonctions sont pas forcément les mêmes en perl :$) Code PYTHON :
output : Code : ██ [ ~ ] [ 16:12:46 ] RE: chercher des sous-chaines dans une chaine et dans l'ordre - ark - 20-03-2014 Snorky: Bah tu les prend pas dans l'ordre de la chaine la :p en se basant sur ton code, je dirais un truc du genre: Code PERL :
RE: chercher des sous-chaines dans une chaine et dans l'ordre - gruik - 20-03-2014 ok autant pour moi, disons que la chaine c'est pas : Code : "titi toto coincoin bouzin gruik pouet toto bouzin gruik bouzin" Code : "titi toto coincoin bouzin gruik pouet totobouzingruik bouzin" c'est plus proche de ce que je cherche ^^ RE: chercher des sous-chaines dans une chaine et dans l'ordre - ark - 20-03-2014 Apparement, avec ta nouvelle chaine, le code suivant fonctionne: Code PERL :
RE: chercher des sous-chaines dans une chaine et dans l'ordre - gruik - 20-03-2014 l'implementation naïve en Perl donnerait ça : Code PERL :
#!/usr/bin/perl Code : titi toto coincoin bouzin gruik pouet bouzintotogruik bouzin si quelqu'un a une implémentation plus propre/astucieuse/perleuse je prends ! RE: chercher des sous-chaines dans une chaine et dans l'ordre - Booster2ooo - 20-03-2014 RegExp? Mais j'imagine que ça sera moins performant que la petite boucle RE: chercher des sous-chaines dans une chaine et dans l'ordre - gruik - 20-03-2014 nop, sauf astuce utiliser les regex (via grep par exemple) ce sera pas une bonne idée ici, même pas tant pour la rapidité d'exécution mais ça risque d'être moins "précis" RE: chercher des sous-chaines dans une chaine et dans l'ordre - gruik - 20-03-2014 je me doutais bien qu'il devait y avoir une solution qui troue le fion, et elle est d'un bon calibre : Code PERL :
Code : titi toto coincoin bouzin gruik pouet bouzintotogruik bouzin thx b0fh ![]() RE: chercher des sous-chaines dans une chaine et dans l'ordre - Booster2ooo - 21-03-2014 sexy ![]() RE: chercher des sous-chaines dans une chaine et dans l'ordre - b0fh - 21-03-2014 Y'a un problème potentiellement de taille: @arr ne peut pas contenir de métacaractères de regex, sinon ça explose. Une petite modification pour que ça soit moins dangereux: |