linux下c c 例項之五正規表示式字串匹配

2021-07-06 11:16:17 字數 1753 閱讀 5648

標準的c和c++不支援正規表示式,但有一些函式庫可以輔助c/c++程式設計師完成這一功能。正規表示式常用函式:編譯正規表示式 regcomp()、匹配正規表示式 regexec()、釋放正規表示式 regfree()。

regcomp.cpp:

#include #include #include #include #include #include #include using namespace std;

int find_first(string input, string pattern, string &out)

iret = regexec(®, input.c_str(), 1, pm, 0);

if (iret == reg_nomatch)else if (iret != 0) else

regfree(®);

return iret;

}int find_first(char *buff, char *pattern, char *outdata)

status = regexec(®, buff, 1, pm, 0);

if (status == reg_nomatch)

else if (status != 0)

else if (status == 0)

outdata[i] = '\0';

}regfree(®);

return status;

}int find_all(char *buff, char *pattern, char result[20])

int i = 0, j, k;

while((status = regexec(®, p, 1, pm, 0)) == 0)

result[i][k] = '\0';

i++;

p += pm[0].rm_eo;

count++;

if (*p == '\0') break;

}regfree(®);

return count;

}int print_file(const char *file_name, const char *pattern)

; char output[1024] = ;

/*編譯正規表示式*/

status = regcomp(®, pattern, reg_extended|reg_newline); //擴充套件正規表示式和識別換行符

assert(status == 0);

while(fgets(buff, sizeof(buff), fp)) { //迴圈讀取檔案

char * p = buff;

while(1) {

status = regexec(®, p, 1, pm, 0);

if (status == 0) { //匹配成功

count++;

strncpy(output, p + pm[0].rm_so, pm[0].rm_eo - pm[0].rm_so);

cout<

g++ -o regcomp regcomp.cpp

./regcomp

當前目錄下的測試檔案test.txt的內容:
abc12345678

正規表示式匹配字串

正規表示式用於字串處理 表單驗證等場合,實用高效。現將一些常用的表示式收集於此,以備不時之需。匹配中文字元的正規表示式 u4e00 u9fa5 評注 匹配中文還真是個頭疼的事,有了這個表示式就好辦了 匹配雙位元組字元 包括漢字在內 x00 xff 評注 可以用來計算字串的長度 乙個雙位元組字元長度計...

正規表示式匹配 字串

正規表示式匹配字串 假使,有幾個需要驗證的字串用 連線在一起 形如 farmer1,1farmer234 想用正規表示式來匹配每乙個字串。private static string sourcestr farmer1,1farmer234 private static string key farm...

字串教程 正規表示式

正規表示式適合很多種語言不單單是c 匹配除換行符以外的任意字元 w 匹配字母,數字,下劃線,漢字 w 小w的補集 就是和小w相反的 s 匹配 任意空白符 包括換行符 n,回車符 r,製表符 t,垂直製表符 v,換頁符 f d 匹配數字 0 9數字 abc 匹配括號中的字元 a c a字元到c字元 x...