Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Možnosť 1:Jednoduchý IPv4 (dobré pre rýchle a špinavé kontroly)
Tento regex funguje dobre pre najbežnejšie adresy IPv4, ale môže chýbať niektoré prípady okrajov (napríklad adresy s poprednými nulami v oktetoch):
`` regex
\ b (?:\ d {1,3} \.) {3} \ d {1,3} \ b
`` `
* `\ B`:Hranica slova na zabránenie čiastočným zápasom (napr. Zodpovedajúce" 192.168.1.100 "v rámci" 192.168.1.1000 ").
* `(?:\ d {1,3} \.)`:Nesprávna skupina zhodujúca sa jedna až tri číslice, po ktorých nasleduje bodka (opakovaná trikrát).
* `\ d {1,3}`:jedna až tri číslice pre posledný oktet.
Možnosť 2:Mierne robustnejšia IPv4
Táto verzia pridáva určitú validáciu, aby sa zabránilo číslám presahujúcim 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] |?
`` `
* `(?:25 [0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]?)`:To sa zhoduje s číslami od 0 do 255. Zvláda rôzne možnosti:
* `25 [0-5]`:Čísla od 250 do 255.
* `2 [0-4] [0-9]`:Čísla od 200 do 249.
* `[01]? [0-9] [0-9]?`:Čísla od 0 do 199 (voliteľné vedenie 0 alebo 1).
Možnosť 3:IPv4 a IPv6 (veľmi zložité)
Regex, ktorý presne spracováva * Adresy IPv4 aj IPv6, je výrazne komplikovanejšie. Všeobecne sa odporúča používať špecializované knižnice analyzovania IP adresy namiesto toho, aby sa na túto úlohu spoliehali výlučne na Regexa. Ak však musíte absolútne použiť regex, buďte pripravení na dlhý a nepraktický výraz. Nájdete príklady online, ale nie sú ľahko čitateľné alebo udržiavateľné.
Odporúčanie:
Pre väčšinu analýzy súborov protokolov, voľba 2 Poskytuje dobrú rovnováhu medzi presnosťou a jednoduchosťou. Ak potrebujete spracovať adresy IPv6, použite v programovacom jazyku špecializovanú analyzujúcu knižnicu IP adresy (modul Python's `iPaddress` je dobrým príkladom). Regulárne výrazy nie sú ideálnym nástrojom pre túto zložitú úlohu.
Príklad použitia (python):
`` `Python
importovať
log_line ="192.168.1.100 - - [10/Oct/2023:13:55:36 +0000] \" Get/http/1,1 \ "200 1024"
vzor =r "\ b (? :(?:25 [0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]?) \.) {3} (?:25 [0-5] | 2 [0-4] [
match =re.search (vzor, log_line)
Ak sa zhoduje:
ip_address =match.group (0)
Print (F "IP adresa sa zistila:{ip_address}")
`` `
Nezabudnite prispôsobiť regex a kód na svoj konkrétny formát súboru protokolov a programovací jazyk.