PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Comprehension des expressios régulières
Comprehension des expressios régulières
Iniciado por Jissé, 04,dic. 2018 21:50 - 4 respuestas
Miembro registrado
136 mensajes
Publicado el 04,diciembre 2018 - 21:50
Bonjour à tous,

Je voudrait faire vérifier une expression régulière par windev avant de me faire jeter par le xsd.
J'ai bien le pattern du xsd mais je ne comprends pas comment le traduire dans windev.
Connaissez vous un endroit où c'est expliqué pour les nuls ?

En attendant voici le pattern
<xs:simpleType name="Alphabetique">
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-ZàáâãäåæçèéêëìíîïñòóôõöùúûüýÿœÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝŸŒ»«"/,'\(\)\-.\s]*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Alphanumerique">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9a-zA-ZàáâãäåæçèéêëìíîïñòóôõöùúûüýÿœÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝŸŒ»«"/,'\(\)\-.:;_°\*\[\]\?!%#\s]*"/>
</xs:restriction>
</xs:simpleType>


C'est bien sûr surtout la fin que je ne comprends pas, je dois nottament admettre le - mais ça ne passe pas avec (pour Alphabéthique):
RENVOYER VérifieExpressionRégulière(sValeur, "[a-zA-ZàáâãäåæçèéêëìíîïñòóôõöùúûüýÿœÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝŸŒ »«"";/,'\(\)\-.\s]+")


Merci de votre attention
edit:
https://www.lucaswillems.com/fr/articles/25/tutoriel-pour-maitriser-les-expressions-regulieres
Mensaje modificado, 04,diciembre 2018 - 22:13
Miembro registrado
962 mensajes
Publicado el 04,diciembre 2018 - 23:51
hello,
il semblerait que VérifieExpressionRégulière ait des problèmes avec le motif que tu lui as mis.
J'ai fait un test en utilisant l'object automation vbscript.regexp qui est plus "standard" que VérifieExpressionRégulière avec ce code :
MonFiltre est une chaîne
MonRegexp est un objet automation "vbscript.regexp"
MonFiltre = "[^a-zA-ZàáâãäåæçèéêëìíîïñòóôõöùúûüýÿœÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝŸŒ »«"";/,'\(\)\-.\s]+"
MonRegexp>>GLOBAL = True // on cherche toutes les occurrences
MonRegexp>>Pattern = MonFiltre
Trace("Vbscript : ",Saisie1," -> ",PAS MonRegexp>>Test(Saisie1) ? "OK" ELSE "NOK" ) // on regarde si la chaîne contient tous les caractères du filtre
Trace("Windev : ",Saisie1," -> ", ...
VérifieExpressionRégulière(Saisie1,"[a-zA-ZàáâãäåæçèéêëìíîïñòóôõöùúûüýÿœÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝŸŒ »«"";/,'\(\)\-.\s]+") ? "OK" ELSE "NOK")

D'après ce résultat :




On constate que windev ne reconnaît pas le tiret ni le .

--
Ami calmant, J.P
Publicado el 05,diciembre 2018 - 09:38
Après mûre réflexion, Jurassic Pork a écrit :
hello,
il semblerait que VérifieExpressionRégulière ait des problèmes avec le motif
que tu lui as mis. J'ai fait un test en utilisant l'object automation
vbscript.regexp qui est plus "standard" que VérifieExpressionRégulière avec
ce code :
MonFiltre est une chaîne
MonRegexp est un objet automation "vbscript.regexp"
MonFiltre =
"[^a-zA-Zàáâãäåæçèéêëìíîïñòóôõöùúûüýÿ½ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜݾ¼
»«"";/,'\(\)\-.\s]+"
MonRegexp>>GLOBAL = True // on cherche toutes les occurrences
MonRegexp>>Pattern = MonFiltre
Trace("Vbscript : ",Saisie1," -> ",PAS MonRegexp>>Test(Saisie1) ? "OK" ELSE
"NOK" ) // on regarde si la chaîne contient tous les caractères du filtre
Trace("Windev : ",Saisie1," -> ", ...
VérifieExpressionRégulière(Saisie1,"[a-zA-Zàáâãäåæçèéêëìíîïñòóôõöùúûüýÿ½ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜݾ¼
»«"";/,'\(\)\-.\s]+") ? "OK" ELSE "NOK")

D'après ce résultat :




On constate que windev ne reconnaît pas le tiret ni le .


en WinDev certains caractères n'ont pas besoin d'être "échapper" donc
remplacer \- par -, ce n'est pas très standard mais c'est comme cela
il est clair que vbscript.regexp est plus standard et préférable à
utiliser

--
Cordialement JeAn-PhI
Miembro registrado
136 mensajes
Publicado el 05,diciembre 2018 - 13:58
Merci beaucoup, ça marche très bien avec vbscript (un première pour moi !)

que signifie la toute fin de la chaine ?
.\s


il y a une histoire d'espace mais laquelle ?

D'autre part, il y a-t-il un objet à "libérer" après l'utilisation de vbscript ?
Il y a-t-il des choses à faire pour le déploiement ? (parce que là, ça a marché tout seul...)
Mensaje modificado, 05,diciembre 2018 - 14:03
Miembro registrado
962 mensajes
Publicado el 05,diciembre 2018 - 16:58
hello,
L'objet automation dynamique est automatiquement libéré à la fin du traitement contenant sa déclaration ou lors d'une nouvelle allocation de l'objet.

Je pense que l'object automation vbscript.regexp est présent de base sur tous les windows modernes (au moins depuis windows XP).

--
Ami calmant, J.P