Salut homonyme ! Début de citation
pourquoi n'avoir pas renvoyé tout simplement la chaine retrouvé ? Fin de citation Cette fonction appelée RegTest est simplement une fonction de test de la présence d'un pattern dans une chaîne. S'il avait fallut faire une fonction qui renvoi une occurence trouvée dans la chaîne à fouiller, la question qu'il faudrait alors se poser ce serait quelle occurence ? Etant donnée que plusieurs occurences peuvent être présente. Si le JawsScript prenait en charge les tableau ou les collection dans toutes ses versions, j'aurais pû renvoyer soit un tableau soit une collection par une telle fonction, mais ce n'est pas le cas. Et beaucoup peuvent alors se retrouver lésés. Autre possibilité cependant, ce serait dans un premier temps de faire: * une fonction RegCount qui renvoi le nombre d'occurence d'un pattern dans une chaîne; * et ensuite une fonction RegSearch dans laquelle on peut indiquer le numéro de l'occurence à renvoyer. Ce qui pourrait donner un code comme ceci: Début du code JawsScript var string s, string sText, int i, int icount ; création de la chaîne dans laquelle faire la recherche let sText = "chaine contenant plusieurs fois la lettre a" ; recherche du nombre d'occurence de a dans sText let icount = RegCount(sText, "a", true, true, true) ; parcours de chaque occurence trouvée dans une boucle let i = 1 While (i<=icount) ; on capte l'occurence courante let s = RegSearch(sText, "a", i, true, true, true) ; puis, on fait ce qu'on veut de l'occurence renvoyée let i = i+1 ; incrémentation du compteur d'occurence EndWhile Fin du code JawsScript Je rappelle que toutes les fonctions utilisées n'existent pas encore, et sont là juste pour évoquer une possibilité. Tout ceci n'est pas un modèle d'optimisation, mais peut très bien se concevoir et se faire. Selon toi, ça te plairait ? Tu m'as forcé à y réfléchir, et ça me tente bien de m'y lancer. Yannick Daniel Youalé ----- Original Message ----- From: yannick< To: [email protected] Sent: Monday, May 12, 2014 9:03 AM Subject: [progliste] Re: JawsScript- Fonction de recherche de texte utilisant les expressions régulières PCRE salut Yannick, et bien dis donc, moi aussi j'ai aussi le nez dans les reg exp . désolé, je n'ai pas encore lu en profondeur ou testé, mais a priori j'aurais une petite question : pourquoi n'avoir pas renvoyé tout simplement la chaine retrouvé ? peut être que ce n'est pas faisable, je ne sais pas .... tu aurais mis la variable text par référence .... ----- Original Message ----- From: Yannick Youalé To: [email protected] ; JawsScript Sent: Monday, May 12, 2014 9:44 AM Subject: [progliste] JawsScript- Fonction de recherche de texte utilisant les expressions régulières PCRE Salut à tous ! J'en avais donné les principes ici il y a quelques temps. Aujourd'hui, voici une fonction toute faite de recherche de la présence d'une chaîne dans une autre utilisant les expressions régulières. Début du code JawsScript Int Function RegTest (string sText, string sPattern, int blGlobal, int blIgnoreCase, int blMultiline) ; Recherche avec regexp ; renvoi true si le pattern est trouvé dans le texte donné. var int i, object reg ; création d'un objet regexp des expressions régulières let reg = CreateObjectEx ("vbscript.regexp", false) ; la recherche est-elle globale ? if blGlobal > 0 then let reg.Global = -1 ; équivaut à true else let reg.Global = 0 ; équivaut à false EndIf ; la recherche ignore-t-elle la cass ? if blIgnoreCase > 0 then let reg.IgnoreCase = -1 else let reg.IgnoreCase = 0 EndIf ; La recherche est-elle multiligne ? if blMultiline > 0 then let reg.Multiline = -1 else let reg.Multiline = 0 EndIf ; Assignation du pattern de l'expression régulière (PCRE) let reg.Pattern = sPattern ; recherche si présence et renvoi de résultat if reg.Test (sText) == -1 then return true else return false EndIf EndFunction Fin du code JawsScript Chez moi, je l'ai créée pour l'intégrer dans un script de recherche rapide à l'intérieur d'un dossier contenant un grand nombre d'éléments. Amicalement ! Yannick Daniel Youalé ------------------------------------------------------------------------------ Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection Antivirus avast! est active.
