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

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

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

#1

Message 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.
Modifié en dernier par SagePourpre le ven. 01 août 2008 12:04, modifié 1 fois.
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#2

Message 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:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

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

#3

Message 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 .
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

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

#4

Message 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 ;)
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

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

#5

Message 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é.
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

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

#6

Message 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 :§
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

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

#7

Message 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.
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#8

Message 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).")
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre