用正則匹配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匹配...