|
| 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-regulieresMensaje 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 MonRegexp>>Pattern = MonFiltre Trace("Vbscript : ",Saisie1," -> ",PAS MonRegexp>>Test(Saisie1) ? "OK" ELSE "NOK" ) 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 MonRegexp>>Pattern = MonFiltre Trace("Vbscript : ",Saisie1," -> ",PAS MonRegexp>>Test(Saisie1) ? "OK" ELSE "NOK" ) 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 |
| |
| |
| | | |
|
| | | | |
| | |
|