Ricardo Peres wrote:

> Can anyone provide an example of using regular expressions in C
> programming?

OK.

-- 
Glynn Clements <[EMAIL PROTECTED]>


#include <stdio.h>
#include <regex.h>

static regex_t regex;

static int
egrep(const char *exp, FILE *fp)
{
        int result = regcomp(&regex, exp, REG_NOSUB | REG_EXTENDED);

        if (result != 0)
        {
                char errbuff[1024];
                regerror(result, &regex, errbuff, sizeof(errbuff));
                fprintf(stderr, "regcomp: %s\n", errbuff);
                return 1;
        }

        for (;;)
        {
                char buff[1024];
                int n;

                if (!fgets(buff, sizeof(buff), fp))
                        break;

                n = strlen(buff);
                if (buff[n-1] == '\n')
                        buff[n-1] = '\0';

                result = regexec(&regex, buff, 0, NULL, 0);

                if (result == 0)
                        fprintf(stdout, "%s\n", buff);
        }

        return 0;
}

int
main(int argc, char **argv)
{
        FILE *fp;

        if (argc != 3)
        {
                fprintf(stderr, "usage: %s <regex> <filename>\n", argv[0]);
                return 1;
        }

        fp = fopen(argv[2], "r");
        if (!fp)
        {
                perror("fopen");
                return 1;
        }

        return egrep(argv[1], fp);
}

Reply via email to