Utilisez des expressions régulières avec Glib
Question
Je voudrais trouver tous les blocs de commentaire (/*...*/), mais la fonction g_regex_match_full retourne toujours vrai. Voici le code:
// 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))
{
}
La solution
Vous n'utilisez pas le modèle que vous pensez que vous êtes. Vous devez échapper antislashs dans les chaînes en C:
comment_regex = g_regex_new("/\\*.*\\*/", G_REGEX_OPTIMIZE, 0, ®ex_error);
Je suis surpris que vous ne recevez pas les avertissements du compilateur de « séquence d'échappement non définie \*
» à partir de votre code actuel. Je suis aussi surpris que vous n'avez pas des erreurs de là glib - le modèle que vous effectivement utilisé était probablement /*.**/
, qui ne fait pas beaucoup de sens. (Avez-vous vérifié regex_error? Ne Évidemment pas si c'est le code complet ...)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow