|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() hazou Chef de projet en SSII Inscription : janvier 2012 Messages : 3 ![]() |
Bonjour,
Je débute en SAS base, et je souhaite vérifier une variable qui contient des adresses email, et je souhaite vérifier que le contenu est bon. En surfant sur le net, j'ai vu qu'on pouvait utiliser des expressions régulières, mais j'ai du mal à comprendre. Quelqu'un peut il m'aider ... Merci d'avance. |
|
|
00
|
|
|
#2 |
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 012 ![]() |
Hello;
Vérifier les adresse mail par rapport à quels critères ? les expressions régulières viennent du Perl à mes connaissances. ![]() Après peut être que tu n'as pas besoin de passer par des expressions régulières afin de valider ta variable. tu peux donner un peu plus de détails? |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() hazou Chef de projet en SSII Inscription : janvier 2012 Messages : 3 ![]() |
Pour être plus précis, dans une table SAS j'ai une variable Email. Quand je l'ouvre et je me concentre sur la variable email, j'ai des adresses telles que "Orange.fr" ou ".fr" ou "12@gmail".
J'aimerais virer les enregistrements de ma table SAS ou l'adresse mail est incorrect. Merci. |
|
|
00
|
|
|
#4 |
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 012 ![]() |
je crois que l'utilisation des Expressions Régulières sont une bonne piste.
je me rappel avoir posté des liens sur les expressions régulières et l'usage dans SAS mais je ne me rappel plus où ni quand. tu peux déjà commencer par ce lien plus de détail tu trouvera dans la rubrique Perl. |
|
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() hazou Chef de projet en SSII Inscription : janvier 2012 Messages : 3 ![]() |
Merci j'ai pu avancer, voici mon bout de code. Pouvez vous me dire si j'ai oublié quelque chose dans l'expression.
Code :
|
||
|
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() ![]() Olivier DecourtFormateur en informatique Inscription : avril 2008 Messages : 1 467 ![]() |
Bonjour.
On peut simplifier et compliquer ton expression. La simplifier en remplaçantpar \w qui est plus générique (et qui inclut le underscore que tu as oublié). Il peut aussi y avoir des tirets dans les éléments de l'adresse. La simplifier en virant le i puisque tu prévois déjà les cas minuscules et majuscules. Finalement je vais le laisser mais on en reparlera plus tard. La compliquer en étant un peu plus strict sur les répétitions : * indique que le schéma peut apparaître zéro fois. Donc l'adresse "@" vérifie ton expression régulière. Je verrais des + (au moins 1 fois le motif) pour ce qui précède le @, pour ce qui le suit immédiatement, et carrément imposer entre 2 et 4 caractères (lettres : on utilisera [a-z] et du coup le i reste pour éviter de devoir aussi parler des majuscules) pour l'extension. La compliquer aussi parce que . ne désigne pas un point, mais n'importe quel signe. C'est un piège super classique et je crois qu'on s'est tous plantés sur ce point en commençant les RX. Il faut écrire \. pour désigner un vrai point. La compliquer enfin parce tu n'es pas assez restrictif : ta RX désigne de quoi faire une adresse mail correcte "quelque part" dans la variable texte. Or il faudrait qu'il n'y ait rien d'autre. Donc on doit ajouter des balises ^ (début de la chaîne) et $ (fin de la chaîne). Comme SAS ajoute spontanément des blancs en fin de chaîne pour aller jusqu'à la longueur de la variable, il convient d'indiquer en 2e argument de PRXMATCH la variable débarrassée de ces blancs à gauche et à droite avec la fonction STRIP. On arrive à Code :
PRXMATCH("/^[\w-]+@[\w-]+\.[a-z]{2,4}$/i", STRIP(mail)) Bon courage. Olivier PS : j'ai sans doute encore oublié des cas... |
|
|
00
|
|
|
#7 |
|
Membre expérimenté
![]() Inscription : avril 2009 Messages : 538 ![]() |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com