2 usuarios conectados

Extraer Ips. Ejercicio en Python

Comparte esto

 
Escribe una función en Python llamada extraer_ips que tome una cadena de texto como entrada y devuelva una lista de todas las direcciones IPv4 válidas encontradas en el texto.

.


Más ejercicios




Mostrar/Ocultar ejercicio resuelto


  Solución al Ejercicio: Extraer Ips

📋 Copiar código



import re

def extraer_ips(texto):
  """
  Extrae todas las direcciones IPv4 válidas de una cadena de texto.

  Args:
    texto: La cadena de texto de entrada.

  Returns:
    Una lista de todas las direcciones IPv4 válidas encontradas.
  """
  patron_ip = re.compile(r'\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b')
  ips = patron_ip.findall(texto)
  return ips

# Ejemplos de uso
texto1 = "La dirección IP del servidor es 192.168.1.1."
resultado1 = extraer_ips(texto1)
print(f"IPs en '{texto1}': {resultado1}")

texto2 = "También podría ser 10.0.0.5 o 172.16.0.100."
resultado2 = extraer_ips(texto2)
print(f"IPs en '{texto2}': {resultado2}")

texto3 = "Una IP inválida sería 256.1.1.1 o 192.168.1.300."
resultado3 = extraer_ips(texto3)
print(f"IPs en '{texto3}': {resultado3}")

texto4 = "Múltiples IPs: 192.168.10.5 y 172.17.0.1."
resultado4 = extraer_ips(texto4)
print(f"IPs en '{texto4}': {resultado4}")

texto5 = "Sin IPs aquí."
resultado5 = extraer_ips(texto5)
print(f"IPs en '{texto5}': {resultado5}")

texto6 = ""
resultado6 = extraer_ips(texto6)
print(f"IPs en '': {resultado6}")

texto7 = "La IP local es 127.0.0.1."
resultado7 = extraer_ips(texto7)
print(f"IPs en '{texto7}': {resultado7}")


 

Explicación del Código:

  1. import re:

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

    • Define una función llamada extraer_ips que toma una cadena de texto (texto) como entrada.
  3. patron_ip = re.compile(r'\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b'):

    • Compila una expresión regular para buscar direcciones IPv4 válidas:
      • \b: Coincide con un límite de palabra para evitar coincidencias parciales.
      • (?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.): Coincide con un octeto válido (0-255) seguido de un punto. Se repite tres veces.
        • 25[0-5]: Coincide con números de 250 a 255.
        • 2[0-4][0-9]: Coincide con números de 200 a 249.
        • [01]?[0-9][0-9]?: Coincide con números de 0 a 199 (opcionalmente un '0' o '1', seguido de uno o dos dígitos opcionales).
      • {3}: Indica que el grupo anterior (octeto seguido de punto) debe repetirse exactamente tres veces.
      • (?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?): Coincide con el último octeto válido (sin el punto final).
      • \b: Coincide con otro límite de palabra.
  4. ips = patron_ip.findall(texto):

    • Utiliza el método findall() del objeto de expresión regular para encontrar todas las subcadenas que coinciden con el patrón de dirección IP en el texto.
  5. return ips:

    • Devuelve una lista de todas las direcciones IP encontradas.

Ejemplos de Uso:

Los ejemplos muestran cómo la función extrae las direcciones IPv4 válidas de diferentes textos, ignorando las partes que no cumplen con el formato.