正则表达式在C不工作(我找不到原因)
问题描述:
在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;
}
答
添加REG_EXTENDED
标志regcomp()
功能:
regcomp(&expression,regexpression,REG_EXTENDED);
+1了,包括一个极好的最小测试用例以显示您遇到的问题。 – 2012-08-09 06:54:56