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 :

Recherche email dans texte avec Expression reguliere


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Deficient visuel
    Inscrit en
    Mai 2019
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Deficient visuel

    Informations forums :
    Inscription : Mai 2019
    Messages : 216
    Par défaut Recherche email dans texte avec Expression reguliere
    Bonjour a toutes et a tous ,
    Debutant , je souhaiterai trouver a partir d' un texte , toute adresse email a l'aide d'une expression reguliere . J'ai essayé mais sans succès .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/usr/bin/env python3
    import re
     
    s = "Perdue dans l’embrasure@gmail.com où la porte t’enferme,tes yeux sillaient de joie@yahoo.fr et ta bouche pleurait.J’attendais, je partais, tout indécis et ferme,mais saisi par ton cœur que j’allais emporter."
     
    regex = "[0-9a-b]+@[0-9a-b](.fr|.com)\W"
     
    match = re.match(regex,s)
    if match:
    	print(f"{match} --> Match !!")

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 759
    Par défaut
    Salut,

    Citation Envoyé par chris7522 Voir le message
    J'ai essayé mais sans succès
    Quand c'est compliqué, une recherche sur Internet vous permet de savoir ce que d'autres on déjà fait et vous en inspirer.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Bonjour,
    re.match ne permet pas de chercher plusieurs expressions situées n'importe où dans une string(voir doc).
    re.findall est plus adapté à ta recherche.
    Voici ce que je ferai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/usr/bin/env python3
    import re
     
    s = "Perdue dans l’ embrasure@gmail.com où la porte t’enferme,tes yeux sillaient de joie@yahoo.fr et ta bouche pleurait.J’attendais, je partais, tout indécis et ferme,mais saisi par ton cœur que j’allais emporter."
    regex = r"(\w+@\w+\.(?:fr|com))"
    match = re.findall(regex,s)
    if match:
    	print(f"{match} --> Match !!")
    Tu peux tester et visualiser une expression ici ----> https://regex101.com/

    édit: simplification ---> regex = r"\w+@\w+\.(?:fr|com)"

  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,

    Par exemple ici: https://crowd42.github.io/blog/scrip...dresses-email/

    Application:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    s = "Perdue dans l’embrasure@gmail.com où la porte t’enferme,tes yeux sillaient de joie@yahoo.fr et ta bouche pleurait.J’attendais, je partais, tout indécis et ferme,mais saisi par ton cœur que j’allais emporter."
     
    regex = re.compile(r'[\w\.-]+@[\w\.-]+')
     
    emails = re.findall(regex, s)
     
    for email in emails:
        print(email)
    Réponse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    embrasure@gmail.com
    joie@yahoo.fr
    Par contre, je ne sais pas si ça traite tous les cas. En effet, la syntaxe des adresses email est plus complexe qu'on le croit couramment. Voir un petit résumé ici: https://fr.wikipedia.org/wiki/Adresse_%C3%A9lectronique.

  5. #5
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Par contre, je ne sais pas si ça traite tous les cas.
    Je trouve l'expression trop permissive.
    En effet la string ' à@lui 'match...
    idem pour .@truc

  6. #6
    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,

    Citation Envoyé par Hominidé Voir le message
    Je trouve l'expression trop permissive.
    En effet la string ' à@lui 'match...
    idem pour .@truc
    Entièrement d'accord! De même pour "machin..truc@bidule.com" puisque le point doublé est interdit. Mais tout dépend de ce qu'on recherche, et des conséquences d'une erreur: on peut éviter un motif parfait et donc complexe si ça ne vaut pas le coup. On peut aussi trouver des motifs plus élaborés sur le web, par exemple ici: https://www.regular-expressions.info/email.html.

  7. #7
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    En effet, la syntaxe des adresses email est plus complexe qu'on le croit couramment. Voir un petit résumé ici: https://fr.wikipedia.org/wiki/Adresse_%C3%A9lectronique.
    En effet....
    En partant de l'illustration de wikipedia:
    Exemples d'adresses valides :

    Abc@example.com
    Abc@10.42.0.1
    Abc.123@example.com
    user+mailbox/department=shipping@example.com
    !#$%&'*+-/=?^_`.{|}~@example.com
    "Abc@def"@example.com
    "Fred Bloggs"@example.com
    "Joe.\\Blow"@example.com
    Loïc.Accentué@voilà.fr8

    Exemples d'adresses non valides :

    Abc.example.com
    Le caractère @ manque.
    Abc.@example.com
    Le caractère . est situé juste avant le caractère @ .
    Abc..123@example.com
    Le caractère . apparaît deux fois de suite.
    En faisant ,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    regex = r'(?:[^\. ]+\.)?(?:(?:[^\. ]+)|(?:\".+\"))?(?<!\.)@[\w\.-]+'
    , j'ai presque tout bon .
    "Presque" car j'ai une fausse correspondance pour avec Abc..123@example.com que je n'ai pas su éviter ...

    Ps: Il semble que pour pouvoir voir le code ci-dessus qu'il faille se connecter...

  8. #8
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    "Presque" car j'ai une fausse correspondance pour avec Abc..123@example.com que je n'ai pas su éviter ...
    Résolu!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    regex = r'(?<= )(?:[^\. ]+\.)?(?:(?:[^\. ]+)|(?:\".+\"))?(?<!\.)@[\w\.-]+'
    Bon courage à celui qui veut relire

  9. #9
    Membre confirmé
    Homme Profil pro
    Deficient visuel
    Inscrit en
    Mai 2019
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Deficient visuel

    Informations forums :
    Inscription : Mai 2019
    Messages : 216
    Par défaut
    Citation Envoyé par tyrtamos Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    s = "Perdue dans l’embrasure@gmail.com où la porte t’enferme,tes yeux sillaient de joie@yahoo.fr et ta bouche pleurait.J’attendais, je partais, tout indécis et ferme,mais saisi par ton cœur que j’allais emporter."
     
    regex = re.compile(r'[\w\.-]+@[\w\.-]+')
     
    emails = re.findall(regex, s)
     
    for email in emails:
        print(email)
    Je te remercie pour ton aide . Ce motif me convient parfaitement !

  10. #10
    Membre confirmé
    Homme Profil pro
    Deficient visuel
    Inscrit en
    Mai 2019
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Deficient visuel

    Informations forums :
    Inscription : Mai 2019
    Messages : 216
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/usr/bin/env python3
    import re
     
    s = "Perdue dans l’ embrasure@gmail.com où la porte t’enferme,tes yeux sillaient de joie@yahoo.fr et ta bouche pleurait.J’attendais, je partais, tout indécis et ferme,mais saisi par ton cœur que j’allais emporter."
    regex = r"(\w+@\w+\.(?:fr|com))"
    match = re.findall(regex,s)
    if match:
    	print(f"{match} --> Match !!")
    Merci de ton aide .
    Pour ton motif , tu as utilisé un groupe intégré dans un autre groupe , c'est ca ?
    Pourquoi as tu utilisé des parentheses ?
    Que signifie " ?: " dans (?:fr|com)

  11. #11
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par chris7522 Voir le message
    Que signifie " ?: " dans (?:fr|com)
    (?:...)
    Une version sans capture des parenthèses habituelles. Valide n'importe quelle expression rationnelle à l'intérieur des parenthèses, mais la sous-chaîne correspondant au groupe ne peut pas être récupérée après l'analyse ou être référencée plus loin dans le motif.
    Tu as la doc en français ici : https://docs.python.org/fr/3/library/re.html
    Personnellement, je l'ai imprimée afin de pouvoir m'y référer si besoin...

    Les parenthèses permettent de défénir des groupes(voir doc)...
    Si ça t'intéresse pour t'exercer:
    https://regexone.com/



    [/QUOTE]

Discussions similaires

  1. Error avec expression Reguliere dans FileMask
    Par delilou dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 22/03/2011, 11h48
  2. Recherche d'un texte avec "find data"
    Par Kiroukool dans le forum Toad
    Réponses: 0
    Dernier message: 31/01/2008, 14h34
  3. [RegEx] trouver un telephone avec expression reguliere
    Par tobiclick dans le forum Langage
    Réponses: 4
    Dernier message: 21/11/2006, 16h42
  4. [RegEx] Pb avec expressions regulieres
    Par Oreily dans le forum Langage
    Réponses: 4
    Dernier message: 22/03/2006, 01h34
  5. probleme avec expression reguliere
    Par naourass dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/11/2005, 12h15

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