1 usuario conectado

Verificar URL válida. Ejercicio en Python

Comparte esto

 
Escribe una función en Python llamada es_url_valida que tome una cadena de texto como entrada y devuelva True si la cadena parece contener una URL válida, y False en caso contrario.


Más ejercicios




Mostrar/Ocultar ejercicio resuelto


  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:

  1. import re:

    • Importa el módulo re para trabajar con expresiones regulares.
  2. def es_url_valida(texto)::

    • Define una función llamada es_url_valida que toma una cadena de texto (texto) como entrada.
  3. 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.
  4. 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.