1
resposta

Sugestão de expressão melhor

O resultado do exercício certamente é:

\w{2,50}@\w{2,15}\.[a-z]{2,3}\.?([a-z]{2,3})?

No entanto penso que esta expressão aceitaria outros e-mails inválidos, com até seis caracteres após o ponto, como:

rodrigo@gmail.comerc

Sugiro uma opção melhor que seria levar o ponto . para dentro do grupo, que já é opcional:

\w{2,50}@\w{2,15}\.[a-z]{2,3}(\.[a-z]{2,3})?

Claro que é só uma expressão simples, pois existem e-mails mais complexos que tem ponto antes do @, que penso, poderia ser avaliado por um ajuste:

(\w{2,50}\.)?\w{2,50}@\w{2,15}\.[a-z]{2,3}(\.[a-z]{2,3})?

1 resposta

Olá Flavio, tudo bem com você?

Peço desculpas pela demora em lhe responder.

Muito boa a sua dica de implementação do código, fico feliz que tenha compartilhado com a comunidade do fórum Alura.

Uma outra 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.