“Conocimiento Redes>Dirección IP

¿Cómo se escribe una expresión regular para que coincida con una dirección IP en el archivo de registro?

2012/7/4
La mejor expresión regular para las direcciones IP coincidentes en los archivos de registro depende del nivel de rigor que necesita. Una regex verdaderamente rigurosa para todas las direcciones IPv4 e IPv6 válidas es extremadamente compleja y posiblemente no valga la pena el esfuerzo para la mayoría del análisis de registro. Aquí hay algunas opciones, que progresan de más simple a más complejo:

Opción 1:IPv4 simple (bueno para verificaciones rápidas y sucias)

Este Regex funciona bien para las direcciones IPv4 más comunes, pero puede perderse algunos casos de borde (como direcciones con ceros líderes en octetos):

`` `regex

\ b (?:\ d {1,3} \.) {3} \ d {1,3} \ b

`` `` ``

* `\ B`:límite de palabras para evitar coincidencias parciales (por ejemplo, coincidir" 192.168.1.100 "dentro de" 192.168.1.1000 ").

* `(?:\ D {1,3} \.)`:Grupo no capturante que coincide de uno a tres dígitos seguido de un punto (repetido tres veces).

* `\ D {1,3}`:de uno a tres dígitos para el último octeto.

Opción 2:IPv4 un poco más robusta

Esta versión agrega alguna validación para evitar números superiores a 255:

`` `regex

\ 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

`` `` ``

* `(?:25 [0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]?)`:Esto coincide con los números de 0 a 255. Maneja las diferentes posibilidades:

* `25 [0-5]`:Números de 250 a 255.

* `2 [0-4] [0-9]`:Números de 200 a 249.

* `[01]? [0-9] [0-9]?`:Números de 0 a 199 (liderazgo opcional 0 o 1).

Opción 3:IPv4 e IPv6 (muy complejo)

Una regex que maneja con precisión * las direcciones * IPv4 e IPv6 es significativamente más complicado. Generalmente se recomienda utilizar bibliotecas de análisis de direcciones IP dedicadas en lugar de depender únicamente de Regex para esta tarea. Sin embargo, si debe usar un Regex, prepárate para una expresión larga y difícil de manejar. Encontrará ejemplos en línea, pero no son fácilmente legibles o mantenibles.

Recomendación:

Para la mayoría del análisis de archivos de registro, Opción 2 Proporciona un buen equilibrio entre precisión y simplicidad. Si necesita manejar las direcciones IPv6, use una biblioteca de análisis de direcciones IP dedicada en su lenguaje de programación (el módulo `ipaddress` de Python es un buen ejemplo). Las expresiones regulares no son la herramienta ideal para esta tarea compleja.

Uso de ejemplo (Python):

`` `Python

importar

log_line ="192.168.1.100 - - [10/oct/2023:13:55:36 +0000] \" get/http/1.1 \ "200 1024"

patrón =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"

Match =re.search (patrón, log_line)

Si el partido:

ip_address =match.group (0)

print (f "dirección IP encontrada:{ip_address}")

`` `` ``

Recuerde adaptar el Regex y el código a su formato de archivo de registro específico y lenguaje de programación.

Dirección IP
¿Cuál sería la máscara de subred predeterminada para la dirección IP 157.54.4.201?
¿Cómo se cambia la dirección de la puerta de enlace en UNIX?
¿Puedes obtener IP de Chat en GlobalWarfare?
¿Qué dirección IP usaría para una red local?
¿Cuánta ADDR IP en el IPv6?
Cómo encontrar a alguien a través de su Dirección IP
¿Cómo saber si tengo una dirección IP estática o dinámica
Cómo encontrar una impresora de red mediante una dirección IP
Conocimiento de la computadora © http://www.ordenador.online