Solución al Ejercicio: Verificar URL válida
📋 Copiar código
import re
def es_url_valida(texto):
"""
Valida si una cadena de texto contiene una URL válida (validación básica).
Args:
texto: La cadena de texto a verificar.
Returns:
True si la cadena parece contener una URL válida, False en caso contrario.
"""
patron_url = re.compile(r'^(https?://)?([\w.-]+)\.([a-z]{2,6})([\w.-/?&%#=]*)/?$')
return bool(patron_url.match(texto))
# Ejemplos de uso
url1 = "http://www.ejemplo.com"
resultado1 = es_url_valida(url1)
print(f"'{url1}' es una URL válida: {resultado1}")
url2 = "https://ejemplo.es/pagina?id=123"
resultado2 = es_url_valida(url2)
print(f"'{url2}' es una URL válida: {resultado2}")
url3 = "www.google.com"
resultado3 = es_url_valida(url3)
print(f"'{url3}' es una URL válida: {resultado3}")
url4 = "ejemplo.org/archivo.html#seccion"
resultado4 = es_url_valida(url4)
print(f"'{url4}' es una URL válida: {resultado4}")
url5 = "ftp://servidor.com"
resultado5 = es_url_valida(url5)
print(f"'{url5}' es una URL válida: {resultado5}")
url6 = "texto sin url"
resultado6 = es_url_valida(url6)
print(f"'{url6}' es una URL válida: {resultado6}")
url7 = "http://localhost"
resultado7 = es_url_valida(url7)
print(f"'{url7}' es una URL válida: {resultado7}")
Explicación del Código:
-
import re
:
- Importa el módulo
re
para
trabajar con expresiones regulares.
-
def es_url_valida(texto):
:
- Define una función llamada
es_url_valida
que toma una cadena de texto (texto
)
como entrada.
-
patron_url = re.compile(r'^(https?://)?([\w.-]+)\.([a-z]{2,6})([\w.-/?&%#=]*)/?$')
:
- Compila una expresión regular para buscar
un patrón de URL:
^
: Coincide con el
inicio de la cadena.
(https?://)?
:
Coincide opcionalmente con "http://" o "https://". ?
hace que el grupo sea opcional.
([\w.-]+)
: Coincide
con uno o más caracteres de palabra (letras, números, guion bajo),
puntos o guiones (para el nombre de dominio).
\.
: Coincide con un
punto literal (escapado con \
).
([a-z]{2,6})
:
Coincide con el dominio de nivel superior (TLD) que tiene entre 2 y
6 letras minúsculas.
([\w.-/?&%#=]*)
:
Coincide con cero o más caracteres permitidos en la ruta,
parámetros, fragmentos, etc.
/?
: Coincide
opcionalmente con una barra diagonal al final.
$
: Coincide con el
final de la cadena.
-
return
bool(patron_url.match(texto))
:
patron_url.match(texto)
:
Intenta hacer coincidir el patrón con la cadena texto
desde
el principio. Si la cadena completa coincide con el patrón, devuelve un
objeto de coincidencia; de lo contrario, devuelve None
.
bool(...)
: Convierte el
resultado de patron_url.match()
a un valor booleano (True
si hubo coincidencia, False
si no).
Ejemplos de Uso:
Los ejemplos muestran cómo la función intenta
validar diferentes cadenas como URLs. Ten en cuenta que esta es una validación
básica y no cubrirá todas las posibles URLs válidas o complejas. Para una
validación más robusta, se podrían usar bibliotecas especializadas en el manejo
de URLs.