Page 1 sur 1

[R] besoin d'aide pour un StringRegExpReplace

Posté : mar. 09 juin 2009 23:54
par ethneldryt
Bonsoir, comme je n'ai jamais compris comment ca marche j'aurais besoin d'aide :
$test = "c:\dossier 1\dossier2\dossier 3\toto.exe
avec StringRegExpReplace j'aimerais que le resultat $result = "toto.exe".
il faudrais en partant de la droite tout surprimer a partir du "\" quel que sois la longueur de ce qu'il y a avant pour ne grader que "toto.exe"
Merci ;)

Re: [..] besoin d'aide pour un StringRegExpReplace

Posté : mer. 10 juin 2009 00:21
par Iste
Je suis pas trop fort en regexp, donc j'utilise souvent des alternative !
Par exemple, pour ton cas je dirais :

Code : Tout sélectionner

$var = StringSplit($avant,"\")
$apres = ""
For $i = 1 To $var[0] -1
    $apres &= $var[$i]&"\"
Next
$apres &= "pastoto.exe"
En fait, je découpe la variable en petit bout, et je recole comme je veux..

Re: [..] besoin d'aide pour un StringRegExpReplace

Posté : mer. 10 juin 2009 00:27
par ethneldryt
salut, je ne comprend pas ton script, du moi je n'arrive pas a le faire marcher :P

Re: [..] besoin d'aide pour un StringRegExpReplace  

Posté : mer. 10 juin 2009 00:34
par Tlem
Voici :

Code : Tout sélectionner

MsgBox(0,"", LSP("c:\dossier 1\dossier2\dossier 3\toto.exe"))
MsgBox(0,"", LSP("c:\dossier 1\dossier2\dossier 3\toto le programme.exe"))
MsgBox(0,"", LSP("\\La machine serveur\Le dossier 1\Le dossier 2\Le Dossier 3\toto.exe"))
MsgBox(0,"", LSP("\\La machine serveur\Le dossier 1\Le dossier 2\Le Dossier 3\toto..exe"))

Func LSP($sPath)
    $sLast = StringRegExpReplace($sPath, "^.*\\|\.*$", "")
    Return $sLast
EndFunc
En utilisant le pattern suivant : "^.*\\|\..*$"
Vous obtiendrez le nom sans l'extension. ;)

Re: [..] besoin d'aide pour un StringRegExpReplace

Posté : mer. 10 juin 2009 00:39
par Iste

Code : Tout sélectionner

$avant = "c:\dossier 1\dossier2\dossier 3\toto.exe" ; $avant contient la chaine a modifier

$var = StringSplit($avant,"\") ; $var devient un array d'une découpe sur chaque "\"
;$var[0] contient le nombre d'éléments, donc ici 5
;$var[1] contient donc "c:"
;$var[2] contient "dossier 1"
;$var[3] contient "dossier 2"
;$var[4] contient "dossier 3"
;et $var[5] contient "toto.exe"

$apres = "" ; on crée une variable pour contenir la nouvelle chaine

For $i = 1 To $var[0] -1    ;on lance une boucle pour chaque bout découpé, 
                            ;moins 1 car toto.exe on en veut pas
                            
    $apres &= $var[$i]&"\"  ;on ajoute a la variable le bout de chaine numéro $1, suivit d'un "\"
                            ;Le premier coup, la variable deviendra "c:\", puis "c:\dossier 1" 
                            ;jusqu'a devenir "c:\dossier 1\dossier2\dossier 3\"
Next

$apres &= "pastoto.exe" ;on rajoute le nouveau nom de l'exe,et vala !
c'est mieux ? ^^

Edit : a zut, Tlem plus rapide :(
en meme temps, "^.*\\|\..*$" j'aurais jamais trouvé xD

Re: [R] besoin d'aide pour un StringRegExpReplace

Posté : mer. 10 juin 2009 00:42
par ethneldryt
merci a vous deux :)