1
resposta

[Sugestão] Expressão Greedy TelefoneBr

Me deparei com um erro ao implementar o regex conforme apresentado na aula para pegar os grupos do número do telefone e imprimi-los.

Inicalmente usando a expressão conforme apresentada na aula

([0-9]{2,3})?([0-9]{2})([0-9]{4,5})([0-9]{4})

para números de celulares obtinha o seguinte resultado

*+551 (39) 8152 - 3662 *

e o objetivo era obter

+55 (13) 98152 - 3662

aqui vale salientar o conceito de greedy (guloso/ganancioso) e non-greedy. Uma expressão greedy vai dar match com o máximo de caracteres possíveis e adicionar o "?" tornaria a expressão non-greedy, dando match com o mínimo atendido pelo requisito estabelecido pelo usuário. No caso do nosso exemplo 2 dígitos para o código internacional é o mínimo necessário que atende o requisito. Logo faz necessário que o caracter "?" seja colocado imediatamente junto com a expressão que verifica o código internacional e dentro do grupo de recorte delimitado pelos parenteses.

([0-9]{2,3}?)([0-9]{2})([0-9]{4,5})([0-9]{4})

Isso deve resolver o problema com números de celulares que não estão sendo representados corretamente. Como na aula ele usou um número de telefone fixo o problema acabou passando despercebido.

Mais informações, confiram a documentação de Regex para Python https://docs.python.org/3/library/re.html

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Oiii Edoardo, tudo bem com você?

Obrigada pela paciência em esperar um retorno :)

Muito bom! Fico feliz que tenha compartilhado sua sugestão com a comunidade do fórum da Alura, assim, podemos ver suas ideias de implementação e seu desenvolvimento, além de que suas sugestões podem ainda ajudar os outros estudantes da plataforma :)

Em caso de dúvidas, me coloco à disposição.

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!