[..] StringRegExp (Espaces et guillemets)

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
silvere
Niveau 8
Niveau 8
Messages : 532
Enregistré le : sam. 24 sept. 2011 22:56
Status : Hors ligne

[..] StringRegExp (Espaces et guillemets)

#1

Message par silvere »

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.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] StringRegExp (Espaces et guillemets)

#2

Message par mikell »

Et je suppose que le mot "chaine" est susceptible de changer... :twisted:
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 :mrgreen:
ç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 )
Avatar du membre
silvere
Niveau 8
Niveau 8
Messages : 532
Enregistré le : sam. 24 sept. 2011 22:56
Status : Hors ligne

Re: [..] StringRegExp (Espaces et guillemets)

#3

Message par silvere »

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.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] StringRegExp (Espaces et guillemets)

#4

Message par mikell »

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 )
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] StringRegExp (Espaces et guillemets)

#5

Message par timmalos »

Voila ce que j'ai sorti , ya surement beaucoup plus simple mais ca marche ;)

Code : Tout sélectionner

[/#"<]?(\S.*?)(?:[">]|\s[/#"<])
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] StringRegExp (Espaces et guillemets)

#6

Message par mikell »

@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 :wink: )

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 )
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] StringRegExp (Espaces et guillemets)

#7

Message par timmalos »

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.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] StringRegExp (Espaces et guillemets)

#8

Message par mikell »

Trouvé Image

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 )
Répondre