python正則匹配ip位址

2021-10-24 14:21:48 字數 1099 閱讀 3355

用正則匹配ip位址

可以將ip位址按區間分類:

0-99 : [1-9]?\d ?表示十位數有1個或無

100-199 : 1\d

200-249 : 2[0-5]\d

250-255: 25[0-5]

前面三位ip都帶.,讓他們擴張三次。 最後一位ip不帶.再來一次

import re

g =' se215.255.255.155 5'

t = re.search(r'(([1-9]?\d|25[0-5]|2[0-4]\d|1\d\d)\.)([1-9]?\d|25[0-5]|2[0-4]\d|1\d\d)'

,g)print

(t.group(

))

結果是:215.255.255.15

事實上最後一位是155,為什麼只得到2個數字?

因為前後的表示式的順序是有講究的,如expression1|expression2和expression2|expression1匹配的結果或許存在不同,優先匹配expression1。[1-9]?\d 就優先匹配了15, 而後面的1\d\d就沒有匹配155.所以調整順序

import re

g =' se215.255.255.155 5'

t = re.search(r'(([1-9]?\d|25[0-5]|2[0-4]\d|1\d\d)\.)(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)'

,g)print

(t.group(

))

結果是:215.255.255.155

前面的三次都可以獲取成功是因為加了最後的限定.,使得優先順序的條件無法滿足.

import re

g =' se215.000.05.115 5'

t = re.search(r'((2(5[0-5]|[0-4]\d))|[0-1]?\d)(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d))'

,g)print

(t.group(

))

215.000.05.115 這可以匹配出中間帶多個0的ip

python匹配ip位址

ip位址是用3個 號作為分隔符,分割4個數字,每個數字的取值在 0,255 一般日誌檔案中的ip位址都是有效的ip位址,不需要我們再去驗證,因此,若從日誌檔案中提取ip,那麼可以簡單寫成這樣 import re s kkk 192.168.1.136 kkk 192.168.1.137 kk 192...

匹配IP位址

正規表示式 25 0 5 2 0 4 0 9 0 1 0 9 1 9 0 9 1 9 25 0 5 2 0 4 0 9 0 1 0 9 1 9 0 9 1 9 0 25 0 5 2 0 4 0 9 0 1 0 9 1 9 0 9 1 9 0 25 0 5 2 0 4 0 9 0 1 0 9 1 9 ...

IP位址匹配

問題描述 在路由器中,一般來說 模組採用最大字首匹配原則進行目的埠查詢,具體如下 ip位址和子網位址所帶掩碼做and運算後,得到的值與子網位址相同,則該ip位址與該子網匹配。比如 192.168.1.100 255.255.255.0 192.168.1.0,則該ip和子網192.168.1.0匹配...