1+ """
2+ * EJERCICIO:
3+ * Utilizando tu lenguaje, explora el concepto de expresiones regulares,
4+ * creando una que sea capaz de encontrar y extraer todos los números
5+ * de un texto.
6+ """
7+
8+ import re
9+
10+ text = "Hola, mi nonbre es Pedro y tengo 25 años. Mi direccción es calle falsa 12-3. Mi número favorito es el 7. mi Perro tien3 12 años"
11+ pattern = r"\d+"
12+ print (re .findall (pattern , text ))
13+
14+
15+ """
16+ * DIFICULTAD EXTRA (opcional):
17+ * Crea 3 expresiones regulares (a tu criterio) capaces de:
18+ * - Validar un email.
19+ * - Validar un número de teléfono.
20+ * - Validar una url.
21+ """
22+
23+ def validate_data ():
24+ email_pattern = r"^[\w.+-]+@[\w&-]+\.[a-zA-z]{2,}$"
25+ telefon_pattern = r"^\+?[\d\s]{3,}$"
26+ url_pattern = r"^http[s]?://(?:www\.)?[\w-]+\.[a-zA-Z]{2,}$" # Usa grupo no capturador
27+
28+ while True :
29+ data = input ("Introduce un email, un telefono o una url para validar, o 'salir' para terminar: " )
30+ if data == "salir" :
31+ break
32+ if re .match (email_pattern , data ):
33+ print ("Email valido" )
34+ continue
35+ elif re .match (telefon_pattern , data ):
36+ print ("Telefono válido" )
37+ continue
38+ elif re .match (url_pattern , data ):
39+ print ("Url válido" )
40+ continue
41+ else :
42+ print ("Formato invalido" )
43+ continue
44+
45+ validate_data ()
46+
47+
48+
49+
50+
51+
52+ """Conceptos explorados adicionales"""
53+
54+ print ("-----------------re.search()----------------------" )
55+ texto = "Hola, me gustan los gatos y los perros."
56+ patron = r"g[aeiou]tos" # Encuentra "gatos" pero no "g1tos"
57+
58+ resultado = re .search (patron , texto )
59+
60+ if resultado :
61+ print (f"Encontrado: { resultado .group ()} " ) # Devuelve la palabra encontrada
62+ else :
63+ print ("No encontrado." )
64+
65+
66+ print ("-----------------re.findall()----------------------" )
67+ texto = "gato perro Python calle paraguas"
68+ patron = r"\b[Pp]\w+"
69+
70+ resultado = re .findall (patron , texto )
71+
72+ if resultado :
73+ print ("¡Coincidencia encontrada!" )
74+ print (resultado )
75+ else :
76+ print ("No se encontró la palabra." )
77+
78+
79+ print ("-----------------re.sub()----------------------" )
80+ texto = "Mi número es 123-456-7890"
81+ patron = r"\d" # Cualquier número
82+
83+ nuevo_texto = re .sub (patron , "X" , texto )
84+
85+ print (nuevo_texto )
86+
87+
88+ print ("-----------------Grupos y Capturas----------------------" )
89+ texto = "Teléfono: (123) 456-7890"
90+ patron = r"\((\d{3})\) (\d{3})-(\d{4})" #Si quiero aplicar un grupo no capturador --> (?:)
91+
92+ resultado = re .search (patron , texto )
93+
94+ if resultado :
95+ print ("Código de área:" , resultado .group (1 ))
96+ print ("Primera parte:" , resultado .group (2 ))
97+ print ("Segunda parte:" , resultado .group (3 ))
98+ print (resultado .groups ())
99+ else :
100+ print ("NO se encontro el patrón" )
101+
102+
103+ print ("-----------------re.match()----------------------" )
104+ email = "correo@example.com"
105+ patron = r"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z]{2,}$"
106+
107+ if re .match (patron , email ):
108+ print ("Correo válido" )
109+ else :
110+ print ("Correo inválido" )
111+
112+
113+ print ("-----------------groupdict()----------------------" )
114+ texto = "Mi email es juan.perez@example.com"
115+ patron = r"(?P<usuario>[a-zA-Z0-9_.+-]+)@(?P<dominio>[a-zA-Z0-9-]+\.[a-zA-Z]{2,})"
116+
117+ resultado = re .search (patron , texto )
118+
119+ if resultado :
120+ print (resultado .groupdict ())
0 commit comments