2011-11-25 107 views
0

我有一個威騰簡單的C程序如下:POSIX擴展正則表達式是否支持 d元字符?

#include <stdio.h> 
#include <regex.h> 

int main(int argc, char* argv[]) 
{ 
    regex_t re; 
    char *pattern = "\\d{3}([a-zA-Z]+).(\\d{2}|N/A)\\s\\1"; // use \d, but wouldn't match 
    const char *target = "123Hello N/A Hello"; 

    regcomp(&re, pattern, REG_EXTENDED|REG_NOSUB); 

    int ret = regexec(&re, target, (size_t) 0, NULL, 0); 
    if(ret == REG_NOMATCH) { 
     printf("\n%s\n does not match \n%s\n", target, pattern); 
    } 

    pattern = "[0-9]{3}([a-zA-Z]+).([0-9]{2}|N/A)\\s\\1"; // changes to [0-9], now OK 

    regcomp(&re, pattern, REG_EXTENDED|REG_NOSUB); 

    ret = regexec(&re, target, (size_t) 0, NULL, 0); 
    if(ret == REG_NOMATCH) { 
     printf("\n%s\n does not match \n%s\n", target, pattern); 
    } 

    regfree(&re); 
    return 0; 
} 

我已經閱讀Wikipedia標準的POSIX正則表達式,我還沒有找到該POSIX立場是否suports的\ d元字符的任何證據。

或者我的代碼有一個微妙的錯誤?

回答

1

this,POSIX正則表達式不支持\d簡寫(和他們也不支持\w\s)。

+0

thx,這篇文章消除了我的困惑。我希望得到每個標準的確切功能列表,有沒有這樣的東西? – soulmachine

相關問題