IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

regex pour tester un mail ou une URL


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut regex pour tester un mail ou une URL
    Bonjour,
    la réponse est sûrement dans ce forum mais j'ose quand même la (re)poser.

    Comment savoir si un texte donné est à peu près une adresse HTML ?

  2. #2
    Membre confirmé Avatar de sopsag
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 224
    Par défaut
    Ce que tu appelles adresse HTML est une URL. Elle peut avoir toutes sortes de formes correctes...

    Le plus simple est d'utiliser la lib urlparse à voir (ici).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> import urlparse
    >>> o = urlparse.urlparse('http://docs.python.org/library/urlparse.html')
    >>> o
    ParseResult(scheme='http', netloc='docs.python.org', path='/library/urlparse.html', params='', query='', fragment='')
    Il te suffit de vérifier que o.scheme vaut bien "http".

  3. #3
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Le souci c'est que cela marche sur une adresse complète. Quelque chose comme "www.google.com" n'est pas repéré.

  4. #4
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Comme j'en avais besoin il y a quelques mois, je me suis penché sur la vérification des adresses mail par regex. C'est ici:

    http://python.jpvweb.com/mesrecettes...f_adresse_mail

    Le problème, c'est que les normes permettent des syntaxes d'adresses mails très complexes, voire farfelues (ex: l'adresse !d!x\\y~z%abc@example.com est valide).

    Comme je voulais seulement détecter des fautes de frappes après saisie au clavier, j'ai simplifié un peu, quitte à avoir quelques "faux non-conformes". Mais tu peux rajouter ce qui manque... à condition d'éplucher les normes (j'en donne les adresses).

    Tyrtamos

  5. #5
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Merci, je vais étudier cela dès que possible et je reviendrais à l'attaque ici.

  6. #6
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Je déterre ce post car je me heurte au problème suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    # -*- coding: utf-8 -*-
    #! /usr/bin/env python
    import re
     
    # The following pattern commes from the following page :
    #    http://python.jpvweb.com/mesrecettespython/verif_adresse_mail
    PATTERN_MAIL = re.compile(r"""
        ^                       # beginning of string
        [a-zA-Z0-9_\-]+         #il y a un premier mot compose de caracteres alphanumeriques et/ou le blanc souligne et/ou le tiret (mot eventuellement reduit a 1 seul caractere)
        (\.[a-zA-Z0-9_\-]+)*    #il peut y avoir eventuellement d'autres mots de même composition, chacun precede d'un seul point
        @                       #l'inevitable arrobas
        [a-zA-Z0-9_\-]+         #il y a un premier mot compose de caracteres alphanumeriques et/ou le blanc souligne et/ou le tiret (mot eventuellement reduit a 1 seul caractere)
        (\.[a-zA-Z0-9_\-]+)*    #il peut y avoir eventuellement d'autres mots de même composition, chacun precede d'un seul point
        (\.[a-zA-Z]{2,6})       #il y a forcement un dernier mot uniquement alphabetique, de longueur pouvant aller de 2 (ex: "fr") a 6 (ex: "museum") et precede par un seul point
        $                       # end of string
        """)
     
    def isSimpleMail(stringToTest):
        return bool(PATTERN_MAIL.search(stringToTest))
     
    print(str(isSimpleMail("mail@club.fr")))
    J'obtiens FALSE et non TRUE comme espéré.

  7. #7
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Le problème vient de ma syntaxe multiligne car le code suivant fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # -*- coding: utf-8 -*-
    #! /usr/bin/env python
    import re
     
    # The following pattern commes from the following page :
    #    http://python.jpvweb.com/mesrecettespython/verif_adresse_mail
    PATTERN_MAIL = re.compile(r"^[a-zA-Z0-9_\-]+(\.[a-zA-Z0-9_\-]+)*@[a-zA-Z0-9_\-]+(\.[a-zA-Z0-9_\-]+)*(\.[a-zA-Z]{2,6})$")
     
    def isSimpleMail(stringToTest):
        return bool(PATTERN_MAIL.search(stringToTest))
     
    print(str(isSimpleMail("mail@club.fr")))

    Comment avoir une présentation multiligne afin de la commenter ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/08/2007, 11h08
  2. Tester la validité d'une url d'un site web
    Par italiasky dans le forum Langage
    Réponses: 21
    Dernier message: 28/02/2007, 15h39
  3. Module Mechanize : tester la disponibilité d'une URL
    Par alphabilel dans le forum Modules
    Réponses: 3
    Dernier message: 27/02/2007, 14h14
  4. Fonction pour tester l'existence d'une image
    Par nais_ dans le forum Langage
    Réponses: 4
    Dernier message: 10/09/2006, 11h38
  5. [web] tester la validiter d'une URL
    Par zebiloute dans le forum Web
    Réponses: 4
    Dernier message: 25/11/2002, 16h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo