POSIX拡張正規表現はメタキャラクタをサポートしていますか?

私は単純なCプログラムを次のようにしています:

#include 
#include 

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スタンドはメタ文字をサポートします。

それとも、コードに微妙な誤りがありますか?

0

1 答え

this によると、POSIX正規表現は \ d をサポートしていません>短縮形です(どちらも \ w \ s をサポートしていません)。

1
追加された
thx、この記事は私の混乱を解消します。私はすべての標準の機能の正確なリストを取得したいと思っていますが、このようなものはありますか?
追加された 著者 soulmachine,