我想找到所有注释块(/*....*/),但是函数g_regex_match_full始终返回true。这是代码:

// Create the regex.
start_block_comment_regex = g_regex_new("/\*.*\*/", G_REGEX_OPTIMIZE, 0, &regex_error);

//Search the regex;
if(TRUE == g_regex_match_full(start_block_comment_regex, current_line, -1, 0, 0, &match_info, &regex_error))
{
}
有帮助吗?

解决方案

您没有使用自己认为的模式。您必须逃脱C中的字符串的后斜线:

comment_regex = g_regex_new("/\\*.*\\*/", G_REGEX_OPTIMIZE, 0, &regex_error);

我很惊讶您不会收到有关“未定义的逃生顺序的编译器警告 \*“从您当前的代码中。我也很惊讶您没有从那里遇到错误 - 您有效使用的模式可能是 /*.**/, ,这没什么意义。 (您检查了Regex_error吗?显然没有完整的代码...)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top