Use expresiones regulares con GLIB
Pregunta
Me gustaría encontrar todos los bloques de comentarios (/*...*/) pero la función g_regex_match_full siempre devuelve verdadero. Aquí está el código:
// 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))
{
}
Solución
No estás usando el patrón que crees que eres. Tienes que escapar de bala de transmisión en cuerdas en C:
comment_regex = g_regex_new("/\\*.*\\*/", G_REGEX_OPTIMIZE, 0, ®ex_error);
Me sorprende que no obtengas advertencias de compiladores sobre "secuencia de escape indefinida \*
"De su código actual. También me sorprende que no haya recibido errores del glib allí; el patrón que usó efectivamente fue probablemente /*.**/
, que no tiene mucho sentido. (¿Revisaste regex_error? Obviamente no lo hizo si ese es el código completo ...)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow