题
我想找到所有注释块(/*....*/),但是函数g_regex_match_full始终返回true。这是代码:
// Create the regex.
start_block_comment_regex = g_regex_new("/\*.*\*/", G_REGEX_OPTIMIZE, 0, ®ex_error);
//Search the regex;
if(TRUE == g_regex_match_full(start_block_comment_regex, current_line, -1, 0, 0, &match_info, ®ex_error))
{
}
解决方案
您没有使用自己认为的模式。您必须逃脱C中的字符串的后斜线:
comment_regex = g_regex_new("/\\*.*\\*/", G_REGEX_OPTIMIZE, 0, ®ex_error);
我很惊讶您不会收到有关“未定义的逃生顺序的编译器警告 \*
“从您当前的代码中。我也很惊讶您没有从那里遇到错误 - 您有效使用的模式可能是 /*.**/
, ,这没什么意义。 (您检查了Regex_error吗?显然没有完整的代码...)
不隶属于 StackOverflow