2012-08-08 56 views
1

在regexpal.com上测试这个正则表达式工作正常,但在我的程序中运行它根本不起作用。我们的目标是拉从URL中的视频ID(并抛出一个错误,如果它不是一个有效的URL)正则表达式在C不工作(我找不到原因)

#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; 
} 
+0

+1了,包括一个极好的最小测试用例以显示您遇到的问题。 – 2012-08-09 06:54:56

回答

2

添加REG_EXTENDED标志regcomp()功能:

regcomp(&expression,regexpression,REG_EXTENDED); 
相关问题