一、簡介
乙個好的程式設計師是會使用db和regular expression的程式設計師,可見兩者是多麼重要。正規表示式是能極大地提高工作效率的工具,使用過linux下各種具備re特性的工具的人一定對此深有感觸。很多語言都支援re,用的最多的當然是指令碼,其中以perl最盛。不過,用c語言來用re不是很多見,但是有時候也很有用,我最近也是看到別人說道這個,所以搜了一些資料加上自己的體會來說一說re在c語言裡的應用。c語言本身不具備re特性,但是有很多庫,在linux下你可以很方便的使用regex.h提供的庫。
二、api
三、例項示例1:example1.c
#include#include編譯#include
#include
#include
intmain()(.*)@..(.*)";
char errbuf[1024
];
char match[100
]; regex_t reg;
int err,nm = 10
; regmatch_t pmatch[nm];
if(regcomp(®,pattern,reg_extended) < 0
) err = regexec(®,bematch,nm,pmatch,0
);
if(err ==reg_nomatch)
else
if(err)
for(int i=0;i<10 && pmatch[i].rm_so!=-1;i++)
}return 0;
}
gcc -g -o example1 example1.c --std=c99執行
示例2:example2.c
#define pcre_static //編譯靜態庫編譯選項
#include
#include
#include
#define oveccount 30
#define ebuflen 128
#define buflen 1024
intmain ()
rc = pcre_exec (re, //
code, 輸入引數,用pcre_compile編譯好的正則表達結構的指標
null, //
extra, 輸入引數,用來向pcre_exec傳一些額外的資料資訊的結構的指標
src, //
subject, 輸入引數,要被用來匹配的字串
strlen (src), //
length, 輸入引數,要被用來匹配的字串的指標
0, //
startoffset, 輸入引數,用來指定subject從什麼位置開始被匹配的偏移量
0, //
options, 輸入引數,用來指定匹配過程中的一些選項
ovector, //
ovector, 輸出引數,用來返回匹配位置偏移量的陣列
oveccount); //
ovecsize, 輸入引數, 用來返回匹配位置偏移量的陣列的最大大小
//返回值:匹配成功返回非負數,沒有匹配返回負數
if (rc < 0
)
printf (
"\nok, has matched ...\n\n
"); //
沒有出錯,已經匹配
for (i = 0; i < rc; i++)
pcre_free (re);
//編譯正規表示式re 釋放記憶體
return 0
;}
gcc -g -o example2 example2.c -lpcre執行
C語言使用正規表示式
校驗時間格式 正規表示式使用詳解 幾個比較常用的正規表示式 常見的正規表示式 整理自ets3100 cmdline 1.只能輸入字母或數字 const char pattern a za z0 9 2.校驗2019 07 23 的格式輸入是否正確 const char pattern 0 9 1 9...
C語言使用正規表示式
posix規定了正規表示式的c語言庫函式,詳見regex 3 我們已經學習了很多c語言庫函式的用法,大家一定具備自己看懂man手冊的能力了。在我的shell專欄中,我詳細介紹了正規表示式在grep sed awk中的用法,學習要能夠舉一反三,希望大家根據regex 3 自己總結正規表示式在c語言中的...
C語言正規表示式
在很多人看來,正規表示式看上去古怪且複雜,因此往往不想去觸及或使用。如果我們拋開這種 畏難 心理,在經過循序漸進地學習之後,就會發現這些複雜的表示式其實寫起來還是相當簡單的。一旦它被你所 馴服 就可利用正規表示式把原需數小時辛苦且易錯的文字處理工作壓縮在幾分鐘 甚至幾秒鐘 內完成。正規表示式定義 正...