[..] Avoir tous les résultats avec StringRegExp

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [..] Avoir tous les résultats avec StringRegExp

#21

Message par tolf »

oui mais comme à priori mon script utilise une ligne que l'utilisateur choisit (j'avais oublié de le préciser), il faut que ça marche tout le temps, même avec des symboles improbables qui ne sont pas impossibles.
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Avoir tous les résultats avec StringRegExp

#22

Message par sylvanie »

Tlem a écrit :J'ai pas trop compris la remarque de Sylvanie, car ce pattern [^,"\s]+|("[^"]*") crée bien le tableau comme le souhaite tolf :

Code : Tout sélectionner

[0] salut
[1] "bonjour, comment allez vous ?"
[2] "moi, je vais bien"
[3] #00ffff
[4] 354
et non le résultat présenté par Sylvanie. :shock:
c'est par ce que j'ai changé le message d'origine par
'salut tout le monde,"bonjour, comment allez vous ?","moi, je vais bien",#00ffff,354'
pour illustrer le fait que si on a plusieurs mots séparés par une space aveant de renconter une "," alors on a un découpage mot à mot.
car [^,"\s]+ peut être vu comme un stringsplit qui agirait à la fois sur les guillemet ' " ' les ' , ' et les espaces (retours tab...)
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: [..] Avoir tous les résultats avec StringRegExp

#23

Message par moutelous »

Euh .... ça veux dire quoi cette petite phrase ?
tolf a écrit :oui mais comme à priori mon script utilise une ligne que l'utilisateur choisit (j'avais oublié de le préciser), il faut que ça marche tout le temps, même avec des symboles improbables qui ne sont pas impossibles.
A+
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11793
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Avoir tous les résultats avec StringRegExp

#24

Message par Tlem »

Désolé Sylvanie, mais je ne comprend toujours pas.
J'ai pris la chaîne dans tous les sens, je lui ais rajouté des espaces avant, après, avant et après les différentes virgules et guillemets sans obtenir le 'bug' dont tu parle. :shock:
Donne nous un exemple de chaîne qui est sensé posé problème s'il te plaît pour que je test ça ...
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
moutelous
Niveau 6
Niveau 6
Messages : 229
Enregistré le : sam. 09 févr. 2008 19:51
Localisation : Rennes
Status : Hors ligne

Re: [..] Avoir tous les résultats avec StringRegExp

#25

Message par moutelous »

Bonjour

@Tlem :
Tlem a écrit :Désolé Sylvanie, mais je ne comprend toujours pas.
J'ai pris la chaîne dans tous les sens, je lui ais rajouté des espaces avant, après, avant et après les différentes virgules et guillemets sans obtenir le 'bug' dont tu parle. :shock:
Sylvanie a simplement ajouté des mots et espaces après le premier salut et avant la virgule ...
sylvanie a écrit :c'est par ce que j'ai changé le message d'origine par
'salut tout le monde,"bonjour, comment allez vous ?","moi, je vais bien",#00ffff,354'
pour illustrer le fait que si on a plusieurs mots séparés par une space aveant de renconter une "," alors on a un découpage mot à mot.
Mais bon ... on fini toujours par trouver une solution :

Code : Tout sélectionner

[^,"]+\b|("[^"]*")|[%@^\`|{#~}&%]+
Presque parfait .... il reste un petit défaut minime (mise à part que je n'ai pas pris en compte tous les caractères spéciaux ... )

A+
A+
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [..] Avoir tous les résultats avec StringRegExp

#26

Message par tolf »

moutelous a écrit :Euh .... ça veux dire quoi cette petite phrase ?
tolf a écrit :oui mais comme à priori mon script utilise une ligne que l'utilisateur choisit (j'avais oublié de le préciser), il faut que ça marche tout le temps, même avec des symboles improbables qui ne sont pas impossibles.
je répondais à la remarque de Tlem :
Tlem a écrit :@tolf vous pouvez vous simplifier la vie en utilisant comme séparateur une suite de symboles improbable (genre ~#~) et modifier la fonction StringSplit en mettant le flag à 1
et donc je disais que j'avais oublié de préciser que l'utilisateur (différent du programmateur) choisissait la chaîne de caractères qui est ensuite décomposée par mon script.
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
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: [..] Avoir tous les résultats avec StringRegExp

#27

Message par moutelous »

Bonjour,

Ok Tolf je n'avais pas suivi ..... et donc

Code : Tout sélectionner

salut,"bonjour, comment allez vous ?" mots hors citation "ceci est la suite de bonjour,...","moi, je vais bien",#00ffff,354,\v marque une virgule de séparation, ce "|" ne sert pas de séparation
ma proposition de Regex juste au dessus ne conviendra pas à cause de l'insertion de guillemet dans une phrase entre virgule .....

A suivre donc ...
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: [..] Avoir tous les résultats avec StringRegExp

#28

Message par sylvanie »

Bonsoir,
je suis trops fatigué ce soir pour creuser ce sujet, qui pourtant est passionnant ...
c'est juste pour Tlem, si l'explication de moutelous ne suffisait pas :
prends ce morceau de code :
► Afficher le texte
on observe bien
[0]|salut
[1]|tout
[2]|le
[3]|monde
[4]|"bonjour, comment allez vous ?"
[5]|"moi, je vais bien"
[6]|#00ffff
[7]|354


Alors qu'à la base on cherche un split par virgule :

[0]|salut tout le monde
[1]|"bonjour, comment allez vous ?"
[2]|"moi, je vais bien"
[3]|#00ffff
[4]|354

Bon et bien moi, je ne vais pas faire de vieux os ce soir ... bonne nuit ZZZZZZ
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: [..] Avoir tous les résultats avec StringRegExp

#29

Message par moutelous »

Bonsoir,

Concernant l'exemple donné par Sylvanie le code suivant est OK ...
► Afficher le texte
Par contre Tolf a apporté une nouvelle contrainte (phrase entre virgule incluant mot entre guillemet) et donc mon Regex ne match plus ...sniff
► Afficher le texte
Bonne soirée et A+
A+
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11793
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Avoir tous les résultats avec StringRegExp

#30

Message par Tlem »

En tout cas mon code avec le double séparateur fonctionne à merveille. :P
C'est parfois moins prise de tête quand même. :lol:
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
moutelous
Niveau 6
Niveau 6
Messages : 229
Enregistré le : sam. 09 févr. 2008 19:51
Localisation : Rennes
Status : Hors ligne

Re: [..] Avoir tous les résultats avec StringRegExp

#31

Message par moutelous »

Bonjour,

Il est vrai, Monsieur Tlem, que votre solution fonctionne à merveille ,chapeau bas .....

Mais j'adore me prendre la tête ..... :wink:

A+
A+
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11793
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Avoir tous les résultats avec StringRegExp

#32

Message par Tlem »

moutelous a écrit :Il est vrai, Monsieur Tlem, que votre solution fonctionne à merveille ,chapeau bas ....
Rhoooo le moqueur ... :lol:
moutelous a écrit :Mais j'adore me prendre la tête .....
Idem, quand je connais.
Mais la les expressions régulières, ... je jette l'éponge. :wink:
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é".
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [..] Avoir tous les résultats avec StringRegExp

#33

Message par tolf »

moutelous a écrit :Par contre Tolf a apporté une nouvelle contrainte (phrase entre virgule incluant mot entre guillemet) et donc mon Regex ne match plus ...sniff
a priori, je pensais l'avoir dit dès le départ mais mon exemple n'étais alors pas assez général (vous m'excuserez :mrgreen: ).

D'ailleurs, mon premier pattern essayait de bien prendre en compte les guillemets au sein d'une phrase : [^,"]*("[^"]*")*[^,"]* : ce qui est en rouge marque le début de la phrase et ce qui est en bleu la fin.
J'avais d'ailleurs fait une petite erreur puisque les guillemets peuvent s'ouvrir et se refermer plusieurs fois, ce qui donnerait (si bien sûr il n'y avait pas le bug de la chaîne vide :x ) : [^,"]*("[^"]*"[^,"]*)*
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
Répondre