Используйте регулярные выражения с Glib - PullRequest
1 голос
/ 29 марта 2010

Я хотел бы найти все блоки комментариев (/*...*/), но функция 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))
{
}

1 Ответ

2 голосов
/ 29 марта 2010

Вы не используете шаблон, который вы думаете. Вы должны избежать обратной косой черты в строках в C:

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

Я удивлен, что вы не получите предупреждения компилятора о "неопределенной escape-последовательности \*" из вашего текущего кода. Я также удивлен, что вы не получили ошибок от glib - шаблон, который вы эффективно использовали, был, вероятно, /*.**/, что не имеет большого смысла. (Вы проверяли regex_error? Очевидно, не проверяли, если это полный код ...)

...