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

  1. #1
    Nouveau membre du Club
    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 sénior
    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 actif
    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 éminent
    Bonjour,

    Par exemple ici: https://crowd42.github.io/blog/script-python-extraire-adresses-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.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  5. #5
    Membre actif
    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 éminent
    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.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  7. ###raw>post.musername###
    Membre actif
    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'(?:[^\. ]+\.)?(?<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />?:[^\. ]+)|(?:\".+\"))?(?<!\.)@[\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...
      0  0

  8. #8
    Membre actif
    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'(?<= )(?:[^\. ]+\.)?(?<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />?:[^\. ]+)|(?:\".+\"))?(?<!\.)@[\w\.-]+'


    Bon courage à celui qui veut relire

  9. #9
    Nouveau membre du Club
    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)

  10. #10
    Nouveau membre du Club
    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 !

  11. #11
    Membre actif
    Ce message n'a pas pu être affiché car il comporte des erreurs.

###raw>template_hook.ano_emploi###