緣起於網易下屬某公司筆試的一道題目,用c/c++實現乙個對[8-9][0-9]的正規表示式實現引擎。
這道題目我做錯了,因為下意識地認為是"^[8-9[0-9]]$"的表示式。
回頭想想,如果不用正規表示式的庫,可以:
在c/c++中常用的正規表示式庫有gnu regex library, boost.regex, pcre, pcre++等等。// trying to match [8-9][0-9]
#include #include #include int main()}}
} isvalid?printf("yes\n"):printf("no\n");
} system("pause");
}
以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 第乙個字元為 則表示匹配除括號外其他的字元,所有特殊字元再字符集中都失去原有的...