簡體   English   中英

具有擴展語法的POSIX正則表達式與應該匹配的位置不匹配

[英]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(&regex, e, 0);
    reti = regexec(&regex, 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(&regex, e, REG_EXTENDED);

但是,此代碼還存在其他幾個問題,包括將const char*char* ,並忽略regcomp()的返回值。

我從來沒有完全掌握不同版本的正則表達式,但我似乎基本的正則表達式不知道限定符+ ,只有*

一種解決方案是使用擴展的正則表達式。 編寫正則表達式時必須指定:

reti = regcomp(&regex, e, REG_EXTENDED);

(我認為+可以在基本正則表達式中使用"\\\\{1,\\\\}"進行模擬,但這不起作用。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM