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 回答