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, &regex_error);

//Search the regex;
if(TRUE == g_regex_match_full(start_block_comment_regex, current_line, -1, 0, 0, &match_info, &regex_error))
{
}
¿Fue útil?

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, &regex_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
scroll top