Skip to content

Commit 3529017

Browse files
committed
#16 - Python v.final Ejercicios base y extra. Con pruebas adicionales)
1 parent 9f4c15a commit 3529017

File tree

1 file changed

+120
-0
lines changed

1 file changed

+120
-0
lines changed
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
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

Comments
 (0)