[英]POSIX regular expression with extended syntax not matching where it should
我試圖在C中使用POSIX正則表達式,但它不起作用。 這是我的代碼:
int regi(char *c, char *e)
{
regex_t regex;
int reti = regcomp(®ex, e, 0);
reti = regexec(®ex, c, 0, NULL, 0);
if(!reti)
return 1;
return 0;
}
int main()
{
char str[5] = {'0','x','2','F'};
if(regi(str, "^(0[xX])[0-9a-fA-F]+"))
// Do stuff
return 0;
}
我在這看: http : //www.peope.net/old/regex.html
這永遠不會進入if語句。
要使用+
元字符,您需要告訴regcomp()
您正在使用擴展的POSIX語法 :
int reti = regcomp(®ex, e, REG_EXTENDED);
但是,此代碼還存在其他幾個問題,包括將const char*
為char*
,並忽略regcomp()
的返回值。
我從來沒有完全掌握不同版本的正則表達式,但我似乎基本的正則表達式不知道限定符+
,只有*
。
一種解決方案是使用擴展的正則表達式。 編寫正則表達式時必須指定:
reti = regcomp(®ex, e, REG_EXTENDED);
(我認為+
可以在基本正則表達式中使用"\\\\{1,\\\\}"
進行模擬,但這不起作用。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.