正規表示式是能極大地提高工作效率的工具,使用過linux下各種具備re特性的工具的人一定對此深有感觸。很多語言都支援re,用的最多的當然是指令碼,其中以perl最盛。不過,用c語言來用re不是很多見,但是有時候也很有用,我最近也是看到別人說道這個,所以搜了一些資料加上自己的體會來說一說re在c語言裡的應用。c語言本身不具備re特性,但是有很多庫,在linux下你可以很方便的使用regex.h提供的庫。 下面是個小應用,處理mac位址的正則
#include
#include
#include
#include
#include
//判斷是否符合所要求格式,正確返回0,錯誤返回非0
int deal_str(char buf)
):([0-9a-fa-f]):([0-9a-fa-f]):([0-9a-fa-f]):([0-9a-fa-f]):([0-9a-fa-f])";
char *pattern = "([0-9a-fa-f]:)[0-9a-fa-f]";
char errbuf[1024];
//char match[100];
regex_t reg;
int err=0,nm = 10;
regmatch_t pmatch[nm];
//把指定的規則表示式pattern編譯成一種特定的資料格式compiled,這樣可以使匹配更有效
if(regcomp(®,pattern,reg_extended) < 0)
//會使用這個資料在目標文 本串中進行模式匹配。執行成功返回0
err = regexec(®,(char *)buf,nm,pmatch,0);
if(err == reg_nomatch)
else if(err)
return 0;}
主函式呼叫
deal_str,判斷返回值即可。
C語言正規表示式
在很多人看來,正規表示式看上去古怪且複雜,因此往往不想去觸及或使用。如果我們拋開這種 畏難 心理,在經過循序漸進地學習之後,就會發現這些複雜的表示式其實寫起來還是相當簡單的。一旦它被你所 馴服 就可利用正規表示式把原需數小時辛苦且易錯的文字處理工作壓縮在幾分鐘 甚至幾秒鐘 內完成。正規表示式定義 正...
正規表示式應用
d 非負整數 正整數 0 0 9 1 9 0 9 正整數 d 0 非正整數 負整數 0 0 9 1 9 0 9 負整數 d 整數 d 非負浮點數 正浮點數 0 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 正浮點數 d 非正浮點數 負浮點數 0 0 9 0 ...
正規表示式(應用)
在此頁面寫正規表示式,可以提供參考,和進行校驗 應用於前端 匹配任意長度的大小寫字母與數字 a za z0 9 匹配任意長度且不為空的大小寫字母與數字 a za z0 9 匹配長度小於20且不為空的大小寫字母與數字 a za z0 9 匹配長度小於20且不為空的大小寫字母與數字與漢字 a za z0...