Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

430
Visualizações
¿Por qué no da todos los números positivos en la cadena? Regex en Python

No entiendo por qué solo da 125, solo el primer número, ¿por qué no da todos los números positivos en esa cadena? Mi objetivo es extraer todos los números positivos.

 import re pattern = re.compile(r"^[+]?\d+") text = "125 -898 8969 4788 -2 158 -947 599" matches = pattern.finditer(text) for match in matches: print(match)
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Intenta usar la expresión regular

 -\d+|(\d+)

Ignorar los partidos. Las cadenas que representan números enteros no negativos se guardan en el grupo de captura 1.

Manifestación

La idea es hacer coincidir pero no guardar en un grupo de captura lo que no desea (números negativos), y hacer coincidir y guardar en un grupo de captura lo que sí desea (números no negativos).

La expresión regular intenta coincidir con -\d+ . Si eso tiene éxito, el puntero de cadena interno del motor de expresiones regulares se mueve justo después del último dígito coincidente. Si -\d+ no coincide, se intenta hacer coincidir la segunda parte de la alternancia (después de | ). Si \d+ coincide, la coincidencia se guarda en el grupo de captura 1.

Cualquier signo más en la cadena se puede ignorar.

Para obtener una descripción más completa de esta técnica, consulte The Greatest Regex Trick Ever . (Busque "Tarzan"|(Tarzan) para llegar al remate).

over 4 years ago · Santiago Trujillo Relatório

0

El siguiente patrón solo coincidirá con números no negativos:

 pattern = re.compile("(?:^|[^\-\d])(\d+)") pattern.findall(text)

PRODUCCIÓN

 ['125', '8969', '4788', '158', '599']
over 4 years ago · Santiago Trujillo Relatório

0

En aras de la exhaustividad, otra idea mediante el uso de \b y un lookbehind .

 \b(?<!-)\d+

Vea esta demostración en regex101

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda