正規表示式函式詳解

2021-06-09 03:07:44 字數 2511 閱讀 6995

1、 編譯正則表達字串regcomp

i. 標頭檔案:#include 

#include 

ii. 函式原型:int regcomp(regex_t * preg, const char *regex, int cfalgs);

iii. 函式說明:引數preg為一指標,指向pattern buffer,用來存放編譯後的結果。引數regex指向正規表示式的字串,而引數cflags則是旗標。

引數cflags有下列幾種情況,可以用or(|)組合:

reg_extended 使用posix延伸正則表示語法,否則使用posix基本語法。

reg_icase 忽略大小寫的差異。

reg_nosub 忽略引數nmatch和pmatch。

reg_newline 特殊字元.將不會以換行字元作比較,特殊字元^則表達換行符後的第乙個位置,特殊字元$則表達換行符的前乙個位置。

v. 附加說明:正規表示式(regular expression:簡稱re)是以字串來表達某種規則的字串集合,以便作搜尋之用。

2、 取得正則搜尋的錯誤原因regerror

i. 標頭檔案:#include 

#include 

ii. 函式原型:size_t regerror(int errcode, const regex_t *preg, char *errbuf, size_t errbuf_size);

iii. 函式說明:regerror()用來取得經regcomp()或regexec()的錯誤原因。引數errcode為之前regcomp()或regexec()返回的錯誤**。而引數preg為一指標,指向

pattern buffer,引數errbuf指向欲存放錯誤字串的緩衝區,引數errbuf_size則為該緩衝區大小。

iv. 返回值:返回錯誤字串的長度。

3、 進行正規表示式的搜尋regexec

i. 標頭檔案:#include 

#include 

ii. 函式原型:int regexec(const regex_t *preg, const char *string, size_t nmatch,  regmatch_t pmatch, int eflags);

iii. 函式說明:引數preg為一指標,指向pattern buffer,此為先經regcomp()編譯後的結果。引數string指向欲尋找的字串位址,引數nmatch代表pmatch陣列的大小,

引數pmatch則為一結構陣列,regexec()會將搜尋後的結果以此結構陣列返回。

【注】:以小括號作為分隔符。

結構體regmatch_t的定義如下:

typedef struct

regmatch_t;

rm_so代表符合條件的起始位置。

rm_eo 代表符合條件的結束位置。

如果rm_so的值為-1,則代表此結構並未讓regexec()使用。

引數eflags有兩種可能值,可使用or(|)組合:

reg_notbol 讓特殊字元^無作用

reg_noteol 讓特殊字元$無作用

4、 釋放正規表示式使用的記憶體regfree

i. 標頭檔案:#include 

#include 

ii. 函式原型:void regfree(regex_t *preg);

iii. 函式說明:此函式用來釋放先前regcomp()和regexec()使用的pattern buffer。引數preg為指向此pattern buffer的指標。

iv. 返回值: 無

5、 示例**

#include 

#include 

#include 

int main(void) ;

char result[1024] = "\0";

if(regcomp(&preg, "([^:]*:)([^*!:]*)(.*)",

reg_extended|reg_newline) != 0)

regexec(&preg,buf,4,pmatch,0);

for(i=0;i<4;i++)

regfree(&preg);

return 0;

} **功能:擷取第一冒號和第二冒號之間的資料。

執行結果: [0] rm_so:0 rm_eo:27

7769:jkl:15518:0:99999:7:::

[1] rm_so:0 rm_eo:5

7769:

[2] rm_so:5 rm_eo:8

jkl[3] rm_so:8 rm_eo:27

:15518:0:99999:7:::

php正規表示式函式詳解

注 本文參考php5 幫助文件 ereg replace php 3,php 4 ereg replace 替換正規表示式 說明string ereg replace string pattern,string replacement,string string 本函式在 string 中掃瞄與 p...

正規表示式詳解

正規表示式 基本正規表示式主要用於grep,egrep,vi,sed,awk命令中進行字串匹配。符號 意義 c 匹配字母c 匹配任意單個字元 匹配前乙個字元出現零次或多次 匹配任意多個任意字元 匹配集合中的任意單個字元,括號中為乙個集合 x y 匹配連續的字串範圍 匹配字串的開頭 匹配字串的結尾 匹...

正規表示式詳解

正規表示式主要作用 分割 匹配 查詢 替換 正規表示式中包括的元素 1.原子 普通字元 a z a z 0 9 原子表 轉義字元 2.元字元 有特殊功能的字元 3.修正模式符 系統內建部分字元,例如 i m s u 原子 1.a z a z 0 9 最常見的字元 2.abc 用圓括號包含起來的單元符...