Aide et conseils concernant AutoIt et ses outils.
silvere
Niveau 8
Messages : 532 Enregistré le : sam. 24 sept. 2011 22:56
Status :
Hors ligne
#1
Message
par silvere » jeu. 05 juil. 2012 19:08
Bonjour,
Je suis a la recherche d'un StringRegExp enfin je pense que c'est bien cette fonction qui conviens pour pouvoir extraire plusieurs chaines de caractères.
Ma chaine de départ :
Code : Tout sélectionner
'/chaine1 #chaine2 "chaine 3" "chaine 4" <chaine5> <chaine6>'
Et a la fin dans un array j'aimerais avoir :
/chaine1
#chaine2
"chaine 3"
"chaine 4"
<chaine5>
<chaine6>
La ou sa me pose problème enfaite c'est les espace dans le guillemets. Sinon j'aurait bien fait sa :
Code : Tout sélectionner
$Array = StringSplit('/chaine1 #chaine2 "chaine 3" "chaine 4" <chaine5> <chaine6>', " ")
Voila, merci d'avance
.
Quand le mensonge prend l'ascenseur, la vérité prend l'escalier. Elle met plus de temps, mais elle fini toujours par arriver.
mikell
Spammer !
Messages : 6292 Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status :
Hors ligne
#2
Message
par mikell » jeu. 05 juil. 2012 19:39
Et je suppose que le mot "chaine" est susceptible de changer...
Donc voilà
Code : Tout sélectionner
#Include <Array.au3>
$txt = '/chaine1 #chaine2 "chaine 3" "chaine 4" <chaine5> <chaine6>'
$res = StringRegExp($txt, '(.*?)\h(?=[/#"<])', 3)
_ArrayDisplay($res)C'est mon tut sur les assertions, ça
ça veut dire :
" Prends ce qui figure avant un espace horizontal
\h , si cet espace est suivi
(?= d'un de ces caractères
/#"< "
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
silvere
Niveau 8
Messages : 532 Enregistré le : sam. 24 sept. 2011 22:56
Status :
Hors ligne
#3
Message
par silvere » jeu. 05 juil. 2012 19:40
Juste énorme ! Tu peut m'expliquer en décortiquer le pattern s'il te plais enfin si sa te dérange pas.
Quand le mensonge prend l'ascenseur, la vérité prend l'escalier. Elle met plus de temps, mais elle fini toujours par arriver.
mikell
Spammer !
Messages : 6292 Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status :
Hors ligne
#4
Message
par mikell » ven. 06 juil. 2012 09:27
Il me semblait l'avoir fait...
Mais ya encore un défaut, l'expression ne sort pas le dernier élément
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
timmalos
Niveau 11
Messages : 1970 Enregistré le : dim. 18 mai 2008 15:16
Status :
Hors ligne
#5
Message
par timmalos » ven. 06 juil. 2012 11:07
Voila ce que j'ai sorti , ya surement beaucoup plus simple mais ca marche
mikell
Spammer !
Messages : 6292 Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status :
Hors ligne
#6
Message
par mikell » ven. 06 juil. 2012 13:34
@tim
Si on le fait en 2 temps comme là-dessous, là ça marche et le regex est très simple
Donc ça doit être trouvable (je veux dire, sortir le résultat tel que demandé dans le post n°1
)
Code : Tout sélectionner
#Include <Array.au3>
$txt = '/chaine1 #chaine2 "chaine 3" "chaine 4" <chaine5> <chaine6>'
$res0 = StringRegExpReplace($txt, '\h(?=[/#"<])', @cr)
$res = StringSplit($res0, @cr)
_ArrayDisplay($res)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
timmalos
Niveau 11
Messages : 1970 Enregistré le : dim. 18 mai 2008 15:16
Status :
Hors ligne
#7
Message
par timmalos » ven. 06 juil. 2012 13:50
A mais j'avais mal lu la demande, je me suis fait c.... à extraire les "" / # et compagnie des chaines de caractères.
Jsuis sur d'avoir eu la bonne réponse pendant mes tests jvais essayer de la retrouver.
mikell
Spammer !
Messages : 6292 Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status :
Hors ligne
#8
Message
par mikell » sam. 07 juil. 2012 22:51
Trouvé
Code : Tout sélectionner
#Include <Array.au3>
$txt = ' /chaine1 #chaine2 "chaine 3" "chaine 4" <chaine5> <chaine6> '
$res = StringRegExp($txt, '\s*(.*?\S+)(?:\h+(?=[/#"<])|\s*$)', 3)
_ArrayDisplay($res)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )