[R] StringRegExpReplace question

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

[R] StringRegExpReplace question

#1

Message par mikell »

Hello
Est-ce qu'il est possible d'avoir avec un seul StringRegExpReplace l'équivalent de plusieurs StringReplace, (comme dans l'exemple rudimentaire qui suit) sachant que dans la string et les séquences à remplacer il peut y avoir n'importe quoi

Code : Tout sélectionner

$string = "le chat a trouvé la souris" &@crlf&  "la souris se sauve et le chat court après la souris dans la maison"
$string = StringReplace($string, "le chat", "Tom")
$string = StringReplace($string, "la souris", "Jerry")
Msgbox(0,"", $string)
Merci d'avance aux spécialistes
Modifié en dernier par Tlem le lun. 23 janv. 2012 20:00, modifié 1 fois.
Raison : Ajout balise [R]
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] StringRegExpReplace question

#2

Message par jchd »

Non, du moins pas avec l'implémentation de StringRegExpReplace dans AutoIt. La partie remplacement par Regexp ne fait pas partie de l'API PCRE et est donc à la discrétion de l'implémenteur. Ce serait (sera un jour si je trouve le moyen de finir une UDF complète pour RegExps sous AI et SQLite, avec support Unicode et tout) possible avec des callbacks, mais à part des bidouillages impraticables, ne pas compter dessus pour l'instant.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] StringRegExpReplace question

#3

Message par mikell »

Merci Image
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [R] StringRegExpReplace question

#4

Message par jchd »

Petite explication au passage maintenant que j'ai deux minutes.

L'implémentation de PCRE sous AutoIt n'est pas idéale, car la bibliothèque PCRE n'est _pas_ actuellement compilée pour reconnaître les caractères Unicode. Pour être plus précis, l'option --enable-utf8 est utilisée (ce qui permet de naviguer dans des chaînes Unicode en UTF-8) mais pas l'option --enable-unicode-properties (qui permet de faire reconnaître les lettres Unicode comme à ou ç en tant que lettres reconnues par les métacaractères adequats comme \w).

Le problème est de faire avaler aux Devs qu'un incrément d'environ 80ko de la taille de l'exécutable vaut le coup pour supporter la pléïade d'utilisateurs n'employant pas un script (= langage) latin non accentué.

Ceci dit, il y a maintenant d'autres facettes à la question. On aimerait tous (ou presque !) disposer de callbacks et il serait malin de pouvoir mettre à profit le compilateur de RE JIT (> 50% plus véloce), préférer l'interface UTF-16 native dont bénéficie la toute prochaine version de PCRE (et ainsi simplifier énormément le code qui actuellement surnage péniblement dans les pointeurs "char" des chaînes UTF-8) et enfin pouvoir utiliser des "handles" de regexp compilées, pour éviter d'avoir à recompiler une RE à chaque pas d'une boucle.

J'attends donc avec une certaine impatience la sortie de cette nouvelle version PCRE 8.30 (actuellement en release candidate 1) pour en faire une DLL avec un jeu d'UDFs exploitant ces nouvelles possibilités.

Par ailleurs, je trouve qu'il serait pas forcément idiot d'en profiter pour rendre cette même DLL (enfin les deux : x32 et x64) utilisables sous SQLite qui offre un opérateur REGEX natif, vide par défaut et, du coup ajouter une fonction regexreplace à SQLite.

Pour parvenir à ça, il faut que la poussière retombe du côté de PCRE 8.30, qui va probablement mettre un temps à se stabiliser et à se peaufiner, puis que la poussière retombe aussi de mon côté, car coder en hiver dans une roulotte de chantier n'a rien de très bandant (soit dit entre nous).

Voilà pour les perspectives.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [R] StringRegExpReplace question

#5

Message par matwachich »

J'en bave déjà!!!
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Répondre