Olá Jorge, tudo bem com você?
Peço desculpas pela demora em lhe responder.
Uma das formas que podemos buscar por e-mails que possuam ponto (.), traço (-) ou underscore (_) antes do arroba (@), podemos utilizar a seguinte expressão regular:
padrao = r"[a-z0-9._-]+@[a-z0-9.-]+\.[a-z]?.[a-z]"
Onde temos, da esquerda para a direita:
- [a-z0-9._-] : Buscará por um conjunto de caracteres informados, antes do arroba (@), independente do tamanho.
- + (mais): Informa que deverá haver uma ou mais ocorrência do conjunto informado anteriormente.
- @[a-z0-9.-]:Buscará por um conjunto de caracteres informados, que deverá está após o arroba (@), independente do tamanho.
- \ . (contra barra ponto): Retira a propriedade especial do ponto (.).
- [a-z]: Buscará por um conjunto de letras após o ponto.
- ?.[a-z]: Buscará por um ponto e um conjunto de letras, podendo = ou não ser informado.
Implementando em um código temos:
import re
padrao = r"[a-z0-9._-]+@[a-z0-9.-]+\.[a-z]?.[a-z]"
email = "Aqui está o email: jorger.abello3@gmail.com.br, favor cadastrar"
resposta = re.search(padrao, email)
print(resposta.group())
Resultado
jorger.abello3@gmail.com.br
Para saber um pouco mais sobre expressões regulares e sobre outros modos de validação, recomendo a leitura do seguinte artigo:
O artigo acima está em inglês, caso tenha dificuldades com o idioma, recomendo o uso do tradutor do navegador.
Em caso de dúvidas, encontro-me à disposição.
Abraços e bons estudos.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!