Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Regex maior que 10000

Na atividade é especificado que deve dar match com milhas maiores que 10000, porém o regex ^Cliente: (.+), Milhas: ([1-9]\d{4,}), Destino: Londres$ a meu ver também capturaria o próprio "10000" visto que busca números de 1 a 9 seguidos por no mínimo 4 dígitos de 0 a 9, sendo assim o 10000 ainda estaria incluso. Acho que o certo seria especificar a busca de clientes que têm "10000 milhas ou mais".

3 respostas

Olá, Willian.

Tudo bem?

Entendo sua preocupação com a expressão regular. Vamos analisar a regex que você mencionou: ^Cliente: (.+), Milhas: ([1-9]\d{4,}), Destino: Londres$.

Essa expressão regular está correta para capturar milhas maiores que 10000. Vamos detalhar:

  • ^Cliente: (.+), captura o início da string e o nome do cliente.
  • Milhas: ([1-9]\d{4,}), captura milhas que começam com um dígito de 1 a 9 seguido por pelo menos quatro dígitos, garantindo que o número mínimo capturado será 10000. No entanto, como o primeiro dígito deve ser de 1 a 9, isso exclui o número 10000, pois 10000 começa com 1 seguido por quatro zeros.
  • Destino: Londres$ captura o destino "Londres" no final da string.

Portanto, a regex ^Cliente: (.+), Milhas: ([1-9]\d{4,}), Destino: Londres$ não capturará o número 10000, mas sim números maiores que 10000, como 10001, 20000, etc.

Para ilustrar, aqui estão alguns exemplos práticos:

  • "Cliente: João, Milhas: 10000, Destino: Londres" não dará match.
  • "Cliente: Maria, Milhas: 10001, Destino: Londres" dará match.
  • "Cliente: Pedro, Milhas: 20000, Destino: Londres" dará match.

Espero ter ajudado. Qualquer dúvida manda aqui. Bons estudos.

Oi Renan, perdão pela demora na resposta hehe

Então, ainda fiquei com dúvidas na verdade, principalmente no trecho que você cita:

No entanto, como o primeiro dígito deve ser de 1 a 9, isso exclui o número 10000, pois 10000 começa com 1 seguido por quatro zeros.

Não entendi exatamente o porquê se o dígito é de 1 a 9 o 10000 não estaria incluso.

E ainda fiquei mais confuso ao jogar o regex no regex101 e dar match kkkk Imagem do site regex101.com com o matching da regex e o texto com 10000 milhas

solução!

Oii William.

Ah tá, eu tinha entendido errado.

No caso ele captura sim os 10000 e acima dele.

O certo seria especificar a busca de clientes que têm "10000 milhas ou mais", como você mencionou.

Eu entendi outra coisa e acabei me equivocando :) Mas você está correto em sua análise.

Vou deixar essa sugestão de correção nessa atividade.

Bons estudos.