Page 1 sur 1

[R] Quelle méthode utiliser pour faire un remplacement sel

Posté : mer. 30 juil. 2008 15:44
par SagePourpre
Salut à tous !

Je me suis encore mis dans le pétrin...

Et j'ai besoin de vous pour me sortir la tête de cette boue.

Voilà, j'explique.

En gros j'ai une ligne de code

Code : Tout sélectionner

$expression = "Run($test)"
 
Je veux avoir $test dans un tableau pour l'utiliser à d'autre fin.

Je fais donc

Code : Tout sélectionner

$expression = stringsplit($expression,"$")
ce qui me donne

$expression[1] = Run(
$expression[2] = test)

je veux analyser mon $expression[2] pour récupérer ma variable test.
Pour ce faire, je dois trouver un moyen de faire ceci :

Lorsque pour la première fois dans $expression[$i] est rencontré les symboles
"," ")" "=" "-" "+" ou encore un espace, on remplace tout entre le début d'expression[$i]
et le symbole par autre chose.

Concrètement, je change le "test" d'expression[2] pour autre chose.




... ou encore n'importe quel autre moyen de trouver des variables dans une ligne de
code .



Si vous avez une idée, une piste, n'importe quoi, je vous en prie, n'hésitez pas :)


Personnellement, je cherche dans le coin de Stringregexpreplace mais j'avoue que je suis
embrouillé pour l'instant.

Re: [...] Quelle méthode utiliser pour faire un remplacement sel

Posté : mer. 30 juil. 2008 23:40
par Tlem
Quelque chose comme ceci devrait faire l'affaire :

Code : Tout sélectionner

#include <array.au3>

$expression = "Run($test)"

$aVar = StringRegExp($expression, '(\$.*)[\ \,\-\*\(\)\+\=]', 3)

_ArrayDisplay($aVar,"")
Merci à ani ou sylvanie de corriger/compléter si je m'y suis mal pris, ou si j'ai oublié des cas. ;)
Hé oui toujours pas buché les expressions régulières ... :mrgreen:

Re: [...] Quelle méthode utiliser pour faire un remplacement sel

Posté : jeu. 31 juil. 2008 00:06
par SagePourpre
Tlem a écrit :Quelque chose comme ceci devrait faire l'affaire :

Code : Tout sélectionner

#include <array.au3>

$expression = "Run($test)"

$aVar = StringRegExp($expression, '(\$.*)[\ \,\-\*\(\)\+\=]', 3)

_ArrayDisplay($aVar,"")
Merci à ani ou sylvanie de corriger/compléter si je m'y suis mal pris, ou si j'ai oublié des cas. ;)
Hé oui toujours pas buché les expressions régulières ... :mrgreen:


hmmm... ça me donne Array[0] seulement, peut importe le nombre
de terme que je rajoute par la suite.

Je regarde dans l'aide mais j'avoue que la fonction est loin de vouloir s'assimiler
comme stringsplit :D .

Re: [...] Quelle méthode utiliser pour faire un remplacement sel

Posté : jeu. 31 juil. 2008 02:40
par ani
j'ai pas trop suivit, tu désire récupérer juste Test ?

si c'est le cas voici une soluce,

Code : Tout sélectionner

$expression = "Run($test)"
$pattern = '\$([\w]+)'
$Var = StringRegExp($expression, $pattern, 3)
msgbox(0,"expression régulière",$Var[0])
puis moi çà fait un bail que j'ai plus touché au régular :(
tout oublié, je vais mis remettre bientôt ;)

Re: [...] Quelle méthode utiliser pour faire un remplacement sel

Posté : jeu. 31 juil. 2008 03:07
par SagePourpre
merci ! Ça semble fonctionner.... reste plus qu'à le tester plus activement dans le cadre
de ce que j'ai prévu...

M'enfin.... va falloir que j'apprenne les regexp ... ça a pas l'air sympa tout de suite héhé.

Re: [...] Quelle méthode utiliser pour faire un remplacement sel

Posté : jeu. 31 juil. 2008 03:13
par ani
faut se plonger une petite semaine, sinon j'ai déjà fait un ou deux "topic (demande d'aide)" a ce sujet, L'expression sur laquel tu veux travailler est toujours pareil ? sans chiffre, ?

'\$([\w]+)'

\$ = tout ce qui se trouve apr!s le caractere dollar
\w = tout caractere compris entre a et z

enfin j'espere que c'est çà, sinon je vais me faire taper sur les doigt :§

Re: [...] Quelle méthode utiliser pour faire un remplacement sel

Posté : jeu. 31 juil. 2008 03:35
par SagePourpre
héhé... bah non... je ne tape sur les doigts de personne .

En fait, mon but est d'extrapoler n'importe quelle variable se trouvant
dans une expression.


Donc, le début de la variable étant toujours $ , un stringsplit suffit.
Par contre, je dois intercepter tous les caractère qui marque la fin d'une variable.
Donc. les espaces, +,-,*,/ et ) ... j'crois pas que j'en oublie.

Je travaille sur un projet nébuleux visant à analyser une ligne de code ...
et renvoyer une fonction en conséquence directement dans scite pour me simplifier
la vie pour un tas de truc.

Re: [...] Quelle méthode utiliser pour faire un remplacement sel

Posté : jeu. 31 juil. 2008 06:47
par Tlem
Voici le code amélioré (grâce à ani ;) )

Code : Tout sélectionner

#include <array.au3>

$expression = 'If $test1 = $Test2 + $Test3 Then $Test4xxx = $x&" "&$y'
$pattern = '\$([\w]+)[\ \, \- \* \( \) \+ \= \&]'

; Recherche une chaine qui commence par $ et fini par espace ou , ou - ou * .....
$aVar = StringRegExp($expression & " ", $pattern , 3)

_ArrayDisplay($aVar,Ubound($aVar) & " variable(s) trouvée(s).")