Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

387
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda