1

regexpal.com でテストしたところ、この正規表現は正常に動作しますが、私のプログラムで実行するとまったく動作しません。目的は、URL からビデオ ID を取得することです (有効な URL でない場合はエラーをスローします)。

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


int main(){
    regex_t expression;

    char * regexpression = "^(https?://)?(www\\.)?youtube\\.com/watch\\?(.*&)?v=(.*?)(&.*)?$";

    regcomp(&expression,regexpression,0);

    char * url = "http://www.youtube.com/watch?v=HereBeVideoId";    

    if(regexec(&expression, url, 0, NULL, 0)){
        printf("Url %s not a valid video.\n",url);
        return;
    }
    return 0;
}
4

1 に答える 1

2

関数にREG_EXTENDEDフラグを追加します。regcomp()

regcomp(&expression,regexpression,REG_EXTENDED);
于 2012-08-09T00:22:10.097 に答える