Page 1 sur 1

[..] Regex assez difficile

Posté : mer. 22 oct. 2008 17:34
par ethneldryt
Bonjour voila j'ai :

Code : Tout sélectionner

$data="C:\data\progr\ok\SetuP.exe"
msgbox(0,"emplacement setup",$data)
Ici on affiche $data complet
Maintenant j'aimerais afficher uniquement "C:\data\progr\ok\" sans modifier $data
Et enlever "SetuP.exe"

Merci de votre aide.

Re: [..] Regex assez difficile

Posté : mer. 22 oct. 2008 18:38
par Tlem
Pas besoin d'expression régulière pour résoudre ce problème (bien que ce soit la solution la plus simple) :

Code : Tout sélectionner

#Include <File.au3>

Dim $szDrive, $szDir, $szFName, $szExt
Dim $data = "C:\data\progr\ok\SetuP.exe"

_PathSplit($data, $szDrive, $szDir, $szFName, $szExt)

msgbox(0,"emplacement setup",$szDrive & $szDir)

Re: [..] Regex assez difficile

Posté : mer. 22 oct. 2008 20:59
par sylvanie
Bonsoir,
une façon de faire serait celle ci :

Code : Tout sélectionner

$data="C:\data\progr\ok\SetuP.exe"
$path=StringRegExpReplace($data,"[^\\]+\Z","")
msgbox(0,"emplacement setup",$path)
 
explication : je sélectionne tous les caractères autres que \ : [^\\]+
ET qui termine la fin de de $data : \Z
du coût on sélectionne la fin de ligne juqu'au premier \ rencontré en partant de la fin
et on écrase cette sélection

Re: [..] Regex assez difficile

Posté : mer. 22 oct. 2008 21:35
par moutelous
Bonsoir à vous,

Autre façon de voir les choses :

Code : Tout sélectionner

$data="C:\data\progr\ok\SetuP.exe"
$array=StringRegExp($data,"[[:graph:]]*\\",3)
msgbox(0, "Emplacement SetUp", $array[0])
Il n'y a plus que l'embarras du choix .... :wink:

A+

Re: [..] Regex assez difficile

Posté : mer. 22 oct. 2008 21:53
par Tlem
@moutelous
Il y à un bug dans ta fonction. ;)
Elle retourne C:\data seulement.

Re: [..] Regex assez difficile

Posté : mer. 22 oct. 2008 21:55
par sylvanie
elle marche bien son expression chez moi ...

d'ailleur on peut aussi mettre
$array=StringRegExp($data,".*\\",3)

Re: [..] Regex assez difficile

Posté : mer. 22 oct. 2008 21:57
par moutelous
RE ...

@TLEM

:?: :?: Bizarre , je viens de retester ...fonctionne très bien tout ça ...

A+

Re: [..] Regex assez difficile

Posté : mer. 22 oct. 2008 21:59
par sylvanie
Il est tellement allergique aux regexp que ça a corrompu son environnement :lol:

Re: [..] Regex assez difficile

Posté : mer. 22 oct. 2008 22:04
par Tlem
Heuu oui c'est exact, mais ...
Désolé du manque de précision, car en fait j'ai testé la fonction avec plusieurs chemin et avec celui-ci ça ne fonctionne pas, alors que celle de sylvanie fonctionne parfaitement :

Code : Tout sélectionner

$data="C:\data\program files\ok\SetuP.exe"
Hé oui satané espace ... :P

Re: [..] Regex assez difficile

Posté : mer. 22 oct. 2008 22:05
par ani
non non c'est correct tlem, sa retourne bien C:\data\progr\ok\

[graph:] =: imprime les caracteres en excluant les espaces.
\\ =: recherche le backslash (\) actuel < si tu le retire plus rien marche


edit : ok tlem ;) sont méchant les epsaces faut virer graph: :P

Pour les espaces sylvanie a mis un exemple

Re: [..] Regex assez difficile

Posté : mer. 22 oct. 2008 22:07
par sylvanie
les deux dernier posts se sont suivis de peut, mais ça tombe bien, car comme le souligne Tlem, et confirmé par Ani, :graph: n'aime pas les espaces ...

Re: [..] Regex assez difficile

Posté : mer. 22 oct. 2008 22:20
par moutelous
Re

Ach !!! Mais quelle idée de mettre des espaces dans un chemin .... Que de problèmes de scripting en perspective. Mais soit, l'antiRegex a encore frappé ....... :wink: je m'incline.

Sois dit en passant la proposition de Sylvanie est OK.

Re: [..] Regex assez difficile

Posté : mer. 22 oct. 2008 22:38
par Tlem
moutelous a écrit : l'antiRegex a encore frappé
Au contraire, je trouve le Regex bien plus puissant que des centaines de fonctions.
La seule chose, c'est que je n'ai pas le temps de m'y pencher donc j'utilise les solutions classiques et rapide (dans le sens qu'elles demande 'moins de réflexion').
Si j'avais la connaissance du Regex, je l'utiliserais à toutes les sauces. :mrgreen:

Re: [R] Regex assez difficile

Posté : mer. 29 oct. 2008 15:35
par ethneldryt
Salut,
j'essaie :
► Afficher le texte
mais ca ne marche pas...
Par contre en php oui :(

c'est quoi l'équivalent en autoit?

Re: [..] Regex assez difficile

Posté : mer. 29 oct. 2008 15:41
par ani
1. On ne dit pas, çà ne fonctionne pas, c'est juste une erreur

soit plus explicite, que veux tu retourné comme valeur ?

merci

Re: [..] Regex assez difficile  

Posté : mer. 29 oct. 2008 15:49
par ethneldryt
Je veux garder :

c:\progr cinq\fire.exe

donc virer ce qu'il y a avant les " et apres les ", y comprsi les "
J'en ai besoin pour améliorer mon notificateur de forum :)

Re: [..] Regex assez difficile

Posté : mer. 29 oct. 2008 16:09
par Tlem
@ethneldryt

Entre :

Code : Tout sélectionner

$data="C:\data\progr\ok\SetuP.exe"
de votre première demande et :

Code : Tout sélectionner

$data=' data "c:\progr cinq\fire.exe" -open -1 /ut "ok" /no "-1" '
de votre dernière demande, il y a un fossé de différence.

Si vous ne donnez pas tous les éléments sur un problème spécifique, comment voulez vous que l'on vous réponde avec exactitude. :shock:

Re: [..] Regex assez difficile

Posté : mer. 29 oct. 2008 16:26
par ethneldryt
Oui la première marche, en faite c'est une autre reg que j'ai besoin la :p

Re: [..] Regex assez difficile

Posté : mer. 29 oct. 2008 19:25
par sylvanie
les syntaxes d'autoit et php ne sont pas les mêmes ...

Code : Tout sélectionner

$data=' data "c:\progr cinq\fire.exe" -open -1 /ut "ok" /no "-1" '
$tot = StringRegExpReplace($data,'\A[^"]*"([^"]+)".*\Z','\1')
If Not @error Then ConsoleWrite(@Extended&@CRLF)
msgbox(0,"",$tot)
 
rappel : \A correspond à ^ (begin)
\Z correspond à $ (end)
\1 correspond à $1 (1 ere occurence trouvée via les () )