C語言中的正規表示式實現

2021-06-16 08:58:53 字數 1057 閱讀 1587

緣起於網易下屬某公司筆試的一道題目,用c/c++實現乙個對[8-9][0-9]的正規表示式實現引擎。

這道題目我做錯了,因為下意識地認為是"^[8-9[0-9]]$"的表示式。

回頭想想,如果不用正規表示式的庫,可以:

// trying to match [8-9][0-9]

#include #include #include int main()}}

} isvalid?printf("yes\n"):printf("no\n");

} system("pause");

}

在c/c++中常用的正規表示式庫有gnu regex library, boost.regex, pcre, pcre++等等。

以gnu regex library為例,

#include #include #include int main(int argc, char ** argv)

const char * pregexstr = argv[1];

const char * ptext = argv[2];

regex_t oregex;

int nerrcode = 0;

char szerrmsg[1024] = ;

size_t unerrmsglen = 0;

if ((nerrcode = regcomp(&oregex, pregexstr, 0)) == 0)

}unerrmsglen = regerror(nerrcode, &oregex, szerrmsg, sizeof(szerrmsg));

unerrmsglen = unerrmsglen < sizeof(szerrmsg) ? unerrmsglen : sizeof(szerrmsg) - 1;

szerrmsg[unerrmsglen] = '\0';

printf("errmsg: %s\n", szerrmsg);

regfree(&oregex);

return 1;

}

C語言中嵌入正規表示式

標準的c和c 都不支援正規表示式,但有一些函式庫可以輔助c c 程式設計師完成這一功能,其中最著名的當數philip hazel的perl compatible regular expression庫,許多linux發行版本都帶有這個函式庫。c語言處理正規表示式常用的函式有regcomp regex...

c語言中的正規表示式regex h

如果使用者熟悉linux下的sed awk grep或vi,那麼對正規表示式這一概念肯定不會陌生。由於它可以極大地簡化處理字串時的複雜度,因此現在已經在許多linux實用工具中得到了應用。千萬不要以為正規表示式只是perl python bash等指令碼語言的專利,作為c語言程式設計師,使用者同樣可...

Go語言中的正規表示式

語法 說明表示式例項 一般字元 匹配自身 abc 匹配abc 匹配任意除換行符 n 外的字元 a.b 轉義字元 a b 匹配a.b 字符集 字元類 對應的位置可以是字符集中任意字元,也可以給出範圍,如 abc 或 a c 第乙個字元為 則表示匹配除括號外其他的字元,所有特殊字元再字符集中都失去原有的...