Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > SAS Base
SAS Base Forum d'entraide sur SAS base : étape data, procédures non statistiques, procédures non graphiques, SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/01/2012, 16h29   #1
Invité de passage
 
Homme hazou
Chef de projet en SSII
Inscription : janvier 2012
Messages : 3
Détails du profil
Informations personnelles :
Nom : Homme hazou
Localisation : France

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : janvier 2012
Messages : 3
Points : 0
Points : 0
Par défaut Expression Régulière Valider EMAIL

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.
hazou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 16h36   #2
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 012
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 012
Points : 1 717
Points : 1 717
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?
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 16h44   #3
Invité de passage
 
Homme hazou
Chef de projet en SSII
Inscription : janvier 2012
Messages : 3
Détails du profil
Informations personnelles :
Nom : Homme hazou
Localisation : France

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : janvier 2012
Messages : 3
Points : 0
Points : 0
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.
hazou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 17h01   #4
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 012
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 012
Points : 1 717
Points : 1 717
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.
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 17h19   #5
Invité de passage
 
Homme hazou
Chef de projet en SSII
Inscription : janvier 2012
Messages : 3
Détails du profil
Informations personnelles :
Nom : Homme hazou
Localisation : France

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : janvier 2012
Messages : 3
Points : 0
Points : 0
Merci j'ai pu avancer, voici mon bout de code. Pouvez vous me dire si j'ai oublié quelque chose dans l'expression.
Code :
1
2
3
4
5
 
DATA _null_;
	X= PRXMATCH("/[a-zA-Z0-9]*@[a-zA-Z0-9]*.[a-zA-Z]*/i","toto@gmail.com);
	put X;
run;
Si X > 0 l'adresse est valide.
hazou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 17h55   #6
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 828
Points : 2 828
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))
Si c'est > 0 alors l'adresse mail est conforme.
Bon courage.
Olivier

PS : j'ai sans doute encore oublié des cas...
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2012, 12h02   #7
Membre expérimenté
 
Inscription : avril 2009
Messages : 538
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 538
Points : 541
Points : 541
cf. i knew how to validate an email address until i read The RFC

tu as un lien vers la regex
xav2229 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h25.


 
 
 
 
Partenaires

Hébergement Web