Foros Python

Versión completa: ER para saber si una palabra cumpla ciertas condiciones.
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Bueno eso, queria saber y conocer algún ej. Con expresiones regulares para lograr lo mismo.

Supongamos un ejemplo en el que queremos comprobar si una determinada palabra cumple las siguientes condiciones:
• Su longitud total es mayor que 4.
• Empieza por “p”.
• Contiene, al menos, una “y”.

palabra = "python"
if len(palabra) > 4 and palabra.startswith('p') and palabra.count('y') >= 1:
    print("Todo ok")
else:
    print("Algo no coincide")     

-----------------------------------------------------------------------------------------------
Otra manera:

palabra = "python"

longitud = len(palabra) > 4 # True
inicio = palabra.startswith('p') # True
contiene = palabra.count('y') >= 1 # True

correcto = all([longitud, inicio, contiene])
if correcto:
    print("todo ok")
else:
    print("algo no coincide")
------------------------------------------------------------------------------------------------
Desde ya gracias y un poco los extrañaba, slds, Daniel.
Hola, Daniel.

No soy muy bueno con expresiones regulares, así que no podría ayudarte demasiado. Lo único que puedo decirte es que me parece más acertada tu solución que una con expresiones regulares, que seguramente será mucho menos legible. Con todo, si llegás a la expresión regular buscada, me gustaría verla. Smile

Saludos
Hola Francisco ¿Cómo estas?.
Esto es lo que pude rescatar, si bien no es todo expresiones regulares esta bastante cerca.

---------------------------------------------------------------------------
  1. import re
  2.  
  3. palabra = "python"
  4.  
  5. if re.match('p\w{4}', palabra) and 'y' in palabra:
  6.     print('Todo Ok')
  7. else:
  8.     print('Algo no coincide')

\w es cualquier letra
{4} obliga a encontrar exactamente 4 letras (más la p inicial ya son cinco)
---------------------------------------------------------------------------

No se porque motivo me intrigan tanto las expresiones regulares es como un imán, pero x momentos pienso que con el código tradicional se puede lograr lo mismo y sin tantas complicaciones.
Te dejo un código que valida si la entrada en un número decimal, de coma flotante.

---------------------------------------------------------------------------
import re
   
numero_texto = input("\nIngrese un número...: ")
   
if re.match('[-+]?(? : (?:\d*\.\d+)|(?:\d+\.?))(?:[Ee][+-]?\d+)?$', numero_texto):
    numero = float(numero_texto)
    print(numero, type(numero))
else:
    print("Ingreso incorrecto")
---------------------------------------------------------------------------

Saludos y lo mejor para vos.
Daniel.
¡Excelente, Daniel! Gracias por compartirlo.

Saludos