.
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:
-
import re
:
- Importa el módulo
re
para
trabajar con expresiones regulares.
-
def extraer_ips(texto):
:
- Define una función llamada
extraer_ips
que toma una cadena de texto (texto
)
como entrada.
-
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.
-
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.
-
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.