dev/c/longtable_params/longtable_params.c

47 lines
1.3 KiB
C
Raw Normal View History

2012-06-08 15:14:13 +04:00
#include <stdio.h>
#include <glib.h>
const gchar *params = "{lcrr@{...}l>{...}p{...}|l|c|r|r@{...}l|>{...}p{...}l|c|r|r@{...}l|>{...}p{...}||l||c||r||r@{...}l||>{...}p{...}|}";
int main (int argc, char *argv[])
{
/* Print all uppercase-only words. */
GRegex *regex;
GMatchInfo *match_info;
GError *error = NULL;
gchar *reverse_params = g_strdup (params);
reverse_params = g_strreverse (reverse_params);
regex = g_regex_new ("("
"(\\||)}[^{}]+{p}[^{}]+{>(\\||)"
"|"
"(\\||)l}[^{}]+{@r(\\||)"
"|"
"(\\||)r(\\||)"
"|"
"(\\||)c(\\||)"
"|"
"(\\||)l(\\||)"
")",
0, 0, NULL);
g_regex_match_full (regex, reverse_params, -1, 0, 0, &match_info, &error);
while (g_match_info_matches (match_info))
{
gchar *word = g_strreverse (g_match_info_fetch (match_info, 0));
g_print ("Found: %s\n", word);
g_free (word);
g_match_info_next (match_info, &error);
}
g_match_info_free (match_info);
g_regex_unref (regex);
if (error != NULL)
{
g_printerr ("Error while matching: %s\n", error->message);
g_error_free (error);
}
g_free (reverse_params);
return 0;
}