Extracción de direcciones IP de texto

PHP Medium regex

Tarea «Extracción de direcciones IP de texto»

Escriba un programa en PHP que lea líneas desde la entrada estándar y extraiga de ellas todas las direcciones IPv4 válidas. Una dirección IP consta de cuatro números de 0 a 255, separados por puntos. No se permiten ceros a la izquierda, a menos que el número sea 0. Las direcciones pueden estar rodeadas de espacios o signos de puntuación. Imprima cada dirección encontrada en una línea separada, en el orden en que aparecen en el texto. Si no se encuentran direcciones, imprima una línea vacía.

Formato de entrada

Varias líneas de texto, cada una de hasta 1000 caracteres de longitud. El número total de líneas no supera las 100.

Formato de salida

Cada dirección IPv4 encontrada en una línea separada, en el orden de aparición. Si no hay direcciones, imprima una línea vacía.

Ejemplos

Ejemplo 1

ENTRADA
Connect to 172.16.0.1 and 192.168.0.255
SALIDA
172.16.0.1 192.168.0.255

Ejemplo 2

ENTRADA
Invalid addresses: 256.1.2.3, 1.2.3.4.5, 0.0.0.0
SALIDA
0.0.0.0

Ejemplo 3

ENTRADA
Invalid: 999.1.2.3 but valid: 1.2.3.4
SALIDA
1.2.3.4

Ejemplo 4

ENTRADA
No addresses here!
SALIDA
main.php