1

我想查找所有注释块(/*...*/),但函数 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))
{
}
4

1 回答 1

2

你没有使用你认为的模式。您必须在 C 中转义字符串中的反斜杠:

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

我很惊讶您没有\*从当前代码中收到有关“未定义转义序列”的编译器警告。我也很惊讶你没有从 glib 那里得到错误——你有效使用的模式可能是/*.**/,这没有多大意义。(你检查过 regex_error 吗?如果那是完整的代码,显然没有......)

于 2010-03-28T20:53:14.063 回答