[..] Regex assez difficile

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
ethneldryt
Status : Hors ligne

[..] Regex assez difficile

#1

Message 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.
Modifié en dernier par ethneldryt le mer. 29 oct. 2008 15:36, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Regex assez difficile

#2

Message 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)
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é".
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Regex assez difficile

#3

Message 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
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
moutelous
Niveau 6
Niveau 6
Messages : 229
Enregistré le : sam. 09 févr. 2008 19:51
Localisation : Rennes
Status : Hors ligne

Re: [..] Regex assez difficile

#4

Message 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+
A+
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Regex assez difficile

#5

Message par Tlem »

@moutelous
Il y à un bug dans ta fonction. ;)
Elle retourne C:\data seulement.
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é".
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Regex assez difficile

#6

Message par sylvanie »

elle marche bien son expression chez moi ...

d'ailleur on peut aussi mettre
$array=StringRegExp($data,".*\\",3)
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
moutelous
Niveau 6
Niveau 6
Messages : 229
Enregistré le : sam. 09 févr. 2008 19:51
Localisation : Rennes
Status : Hors ligne

Re: [..] Regex assez difficile

#7

Message par moutelous »

RE ...

@TLEM

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

A+
A+
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Regex assez difficile

#8

Message par sylvanie »

Il est tellement allergique aux regexp que ça a corrompu son environnement :lol:
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Regex assez difficile

#9

Message 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
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é".
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] Regex assez difficile

#10

Message 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
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Regex assez difficile

#11

Message 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 ...
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
moutelous
Niveau 6
Niveau 6
Messages : 229
Enregistré le : sam. 09 févr. 2008 19:51
Localisation : Rennes
Status : Hors ligne

Re: [..] Regex assez difficile

#12

Message 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.
A+
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Regex assez difficile

#13

Message 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:
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é".
ethneldryt
Status : Hors ligne

Re: [R] Regex assez difficile

#14

Message 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?
Modifié en dernier par ani le mer. 29 oct. 2008 15:55, modifié 1 fois.
Raison : Le code en couleur, c'est pour les exemples de script, merci
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] Regex assez difficile

#15

Message 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
ethneldryt
Status : Hors ligne

Re: [..] Regex assez difficile

#16

Message 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 :)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Regex assez difficile

#17

Message 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:
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é".
ethneldryt
Status : Hors ligne

Re: [..] Regex assez difficile

#18

Message par ethneldryt »

Oui la première marche, en faite c'est une autre reg que j'ai besoin la :p
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Regex assez difficile

#19

Message 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 () )
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Répondre