Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> networking >> Indirizzo IP >> .

Come si scrive un'espressione regolare per abbinare un indirizzo IP nel file di registro?

La migliore espressione regolare per abbinare gli indirizzi IP nei file di registro dipende dal livello di rigidità di cui hai bisogno. Un regex davvero rigoroso per tutti gli indirizzi IPv4 e IPv6 validi è estremamente complesso e probabilmente non vale la pena per la maggior parte dell'analisi dei registri. Ecco alcune opzioni, che passano da più semplici a più complesse:

Opzione 1:semplice IPv4 (buono per controlli rapidi e sporchi)

Questo regex funziona bene per gli indirizzi IPv4 più comuni ma potrebbe perdere alcuni casi di bordo (come gli indirizzi con gli zeri principali negli ottetti):

`` `regex

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

`` `

* `\ b`:confine di parole per prevenire le partite parziali (ad esempio, corrispondenza" 192.168.1.100 "entro" 192.168.1.1000 ").

* `(?:\ d {1,3} \.)`:gruppo non catturante corrispondente da una a tre cifre seguita da un punto (ripetuto tre volte).

* `\ d {1,3}`:da una a tre cifre per l'ultimo ottetto.

Opzione 2:leggermente più robusta IPv4

Questa versione aggiunge una certa convalida per evitare numeri superiori 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]?)`:Questo corrisponde a numeri da 0 a 255. Gestisce le diverse possibilità:

* `25 [0-5]`:numeri da 250 a 255.

* `2 [0-4] [0-9]`:numeri da 200 a 249.

* `[01]? [0-9] [0-9]?`:Numeri da 0 a 199 (leader opzionale 0 o 1).

Opzione 3:IPv4 e IPv6 (molto complesso)

Un regex che gestisce accuratamente * entrambi gli indirizzi IPv4 e IPv6 è significativamente più complicato. Si consiglia generalmente di utilizzare le librerie di analisi IP dedicate invece di fare affidamento esclusivamente su Regex per questa attività. Tuttavia, se devi assolutamente usare un regex, preparati per un'espressione lunga e ingombrante. Troverai esempi online, ma non sono facilmente leggibili o gestibili.

Raccomandazione:

Per la maggior parte dell'analisi dei file di registro, Opzione 2 Fornisce un buon equilibrio tra precisione e semplicità. Se è necessario gestire gli indirizzi IPv6, utilizzare una libreria di analisi IP dedicata nel linguaggio di programmazione (il modulo "iPaddress" di Python è un buon esempio). Le espressioni regolari non sono lo strumento ideale per questa complessa attività.

Esempio di utilizzo (Python):

`` `Python

importazione re

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

pattern =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 (pattern, log_line)

Se corrispondente:

ip_address =match.group (0)

print (f "Indirizzo IP trovato:{ip_address}")

`` `

Ricorda di adattare il regex e il codice al formato specifico del file di registro e al linguaggio di programmazione.

 

networking © www.354353.com