C語言正則匹配IP例項詳解

2021-09-28 12:30:38 字數 1297 閱讀 2420

在實際開發中,作一些字串的匹配時,使用正規表示式來過濾匹配,**更加簡潔、匹配更加精準。為此,想到引入乙個問題來總結記錄一下 linux c 中正規表示式的使用方法。

一、問題描述

要求使用者輸入一串類似ip位址的字串,該程式通過呼叫c庫提供的正規表示式介面來實現判斷使用者輸入的 ip 是否合法。

二、匹配 ip位址正規表示式

^[0-9][.][0-9][.][0-9][.][0-9]$

注意:此表示式只匹配正確的 ip格式,標準ip為[0-255].[0-255].[0-255].[255],不判斷使用者輸入的ip值大小,即使用者輸入 999.999.999.999 時,正則匹配為正確的 ip格式,實際 ip值的大小可通過在程式中判斷是否為 【0-255】。

三、正則函式介面

c正則函式宣告標頭檔案為: 和

四、c**實現

#include

#include

#include

#include

#define error_size 256

char errbuf[error_size]=;

static

void

check_ip_format

(regex_t *ipreg,

const

char

*ip_str)

else

if(status == reg_nomatch)

return;}

intmain()

;char

*ip_format =

"^[0-9][.][0-9][.][0-9][.][0-9]$"

;// 編譯正規表示式

regex_t ipreg;

int reg =

regcomp

(&ipreg, ip_format, reg_extended);if

(reg !=0)

while(1

)check_ip_format

(&ipreg, ip_str);}

regfree

(&ipreg)

;return0;

}

五、執行結果

上面程式能夠匹配出使用者輸入的 ip 是否是數字,並且是否滿足標準ip格式,具體數字大小可以另行判斷

正則匹配IP

分析 ip位址的長度為32位,分為4段,每段8位,用十進位制數字表示,每段數字範圍為0 255 2 8 段與段之間用英文句點 隔開。例如 某台計算機ip位址為10.11.44.100。ip位址的組成特點 250 255 200 249 0 199。分別考慮 這三種情況可以分開考慮,1.250 255...

正則匹配IP

分析 ip位址的長度為32位,分為4段,每段8位,用十進位制數字表示,每段數字範圍為0 255 2 8 段與段之間用英文句點 隔開。例如 某台計算機ip位址為10.11.44.100。ip位址的組成特點 250 255 200 249 0 199。分別考慮 這三種情況可以分開考慮,1.250 255...

python正則匹配ip位址

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