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

383
Visualizações
Extraiga todos los números (int y floats) después de una palabra específica

Suponiendo que tengo la siguiente cadena:

 str = """ HELLO 1 Stop #$**& 5.02‼️ 16.1 regex 5 ,#2.3222 """

Quiero exportar todos los números, ya sea int o float después de la palabra "stop" sin distinción entre mayúsculas y minúsculas. por lo que los resultados esperados serán:

 [5.02, 16.1, 5, 2.3222]

Lo más lejos que he llegado hasta ahora es usando PyPi regex de otra publicación aquí:

 regex.compile(r'(?<=stop.*)\d+(?:\.\d+)?', regex.I)

pero esta expresión me da solo [5.02, 16.1]

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Otro más, aunque con el módulo de regex más nuevo:

 (?:\G(?!\A)|Stop)\D+\K\d+(?:\.\d+)?

Vea una demostración en regex101.com .


En Python , esto podría ser

 import regex as re string = """ HELLO 1 Stop #$**& 5.02‼️ 16.1 regex 5 ,#2.3222 """ pattern = re.compile(r'(?:\G(?!\A)|Stop)\D+\K\d+(?:\.\d+)?') numbers = pattern.findall(string) print(numbers)

y rendiría

 ['5.02', '16.1', '5', '2.3222']

No nombre sus variables después de funciones incorporadas, como str , list , dict y similares.


Si necesita ir más allá y limitar su búsqueda dentro de algunos límites (por ejemplo, todos los números entre Stop y end ), también podría usar

 (?:\G(?!\A)|Stop)(?:(?!end)\D)+\K\d+(?:\.\d+)? # ^^^ ^^^

Vea otra demostración en regex101.com .

over 4 years ago · Santiago Trujillo Relatório

0

Obtiene solo los primeros 2 números, ya que .* no coincide con una nueva línea.

Puede agregar actualizar las banderas a regex.I | regex.S para que el punto coincida con una nueva línea.

 import regex text = """ HELLO 1 Stop #$**& 5.02‼️ 16.1 regex 5 ,#2.3222 """ pattern = regex.compile(r'(?<=\bstop\b.*)\d+(?:\.\d+)?', regex.I | regex.S) print(regex.findall(pattern, text))

Producción

 ['5.02', '16.1', '5', '2.3222']

Ver una demostración de Python


Si desea imprimir los números después de la palabra "stop", también puede usar python re y match stop, y luego capturar en un grupo todo lo que sigue.

Luego puede tomar ese valor del grupo 1 y encontrar todos los números.

 import re text = """ HELLO 1 Stop #$**& 5.02‼️ 16.1 regex 5 ,#2.3222 """ pattern = r"\bStop\b(.+)" m = re.search(pattern, text, re.S|re.I) if m: print(re.findall(r"\d+(?:\.\d+)*", m.group(1)))

Producción

 ['5.02', '16.1', '5', '2.3222']
over 4 years ago · Santiago Trujillo Relatório

0

Podrías usar:

 inp = """ HELLO 1 Stop #$**& 5.02‼️ 16.1 regex 5 ,#2.3222""" nums = [] if re.search(r'\bstop\b', inp, flags=re.I): inp = re.sub(r'^.*?\bstop\b', '', inp, flags=re.S|re.I) nums = re.findall(r'\d+(?:\.\d+)?', inp) print(nums) # ['5.02', '16.1', '5', '2.3222']

La lógica if anterior garantiza que solo intentemos completar la matriz de números si estamos seguros de que Stop aparece en el texto de entrada. De lo contrario, la salida predeterminada es solo una matriz vacía. Si aparece Stop , eliminamos la parte inicial de la cadena antes de usar re.findall para encontrar todos los números que aparecen después.

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