Следующие функции позволяют
работать с регулярными выражениями на разных языках:
| regcomp | Компилирует заданное простое или расширенное регулярное выражение в исполняемую строку. | 
| regexec | Сравнивает строку с откомпилированным простым или расширенным регулярным выражением, полученным функцией regcomp. | 
| regerror | Преобразует коды ошибок, возвращаемые функциями regcomp и regexec, в текстовые сообщения. | 
| regfree | Освобождает память, выделенную функцией regcomp для хранения откомпилированного простого или расширенного регулярного выражения. После применения функции regfree регулярное выражение перестает быть откомпилированным. | 
| fnmatch | Проверяет строку на соответствие указанному шаблону. Функция fnmatch может применяться в приложении, просматривающем словарь для нахождения записей, соответствующих заданному шаблону. Кроме того, функция fnmatch применяется для сравнения с шаблоном путей к файлам. | 
#include                 <locale.h>
#include                 <regex.h>
 
#define                  BUFSIZE    256
 
 
main()
{
        char    *p;
 
        char    *pattern[] = {
                "hello[0-9]*",
                "1234"
        };
        
 
        char     *string = "this is a test string hello112 and this is test";
                /* Строка для сравнения */
 
        int     retval;
        regex_t   re;
        char    buf[BUFSIZE];
 
        int     i;
 
        setlocale(LC_ALL, "");
 
        for(i = 0;i <2; i++){
                retval = match(string, pattern[i], &re);
                if(retval == 0){
                        printf("Обнаружено соответствие \n");
                }else{
                        regerror(retval, &re, buf, BUFSIZE);
                        printf("ошибка = %s\n", buf);
                }
        }
        regfree( &re);
}
 
 
int match(char *string, char *pattern, regex_t *re)
{
        int     status;
 
        if((status=regcomp( re, pattern, REG_EXTENDED))!= 0)
                return(status);
        status = regexec( re, string, 0, NULL, 0);
        return(status);
}
#include         <locale.h>
#include                <regex.h>
 
#define                  BUFSIZE    256
 
 
main()
{
        char    *p;
 
        char    *pattern = "[0-9]";
        char    *string = "Сегодня 11 февраля 1992 г.";
 
        int     retval;
        regex_t re;
        char    buf[BUFSIZE];
        regmatch_t pmatch[100];
        int      status;
        char     *ps;
 
        int      eflag;
 
        setlocale(LC_ALL, "");
 
        /* Компиляция шаблона */
 
        if((status = regcomp( &re, pattern, REG_EXTENDED))!= 0){
                regerror(status, &re, buf, 120);
                exit(2);
        }
 
        ps = string;
        printf("Строка для сравнения: %s\n", ps);
        eflag = 0;
 
        /* Найти все соответствия */
        while( status = regexec( &re, ps, 1, pmatch, eflag)== 0){
                printf("найдено соответствие в позиции %d, строка: %s\n", 
                        pmatch[0].rm_so, ps+pmatch[0].rm_so);
                ps += pmatch[0].rm_eo;
                printf("\nследующая строка для сравнения: %s\n", ps);
                eflag = REG_NOTBOL;
 
        }
        regfree( &re);
}
#include                 <locale.h>
#include                 <fnmatch.h>
#include                 <sys/dir.h>
 
main(int argc, char *argv[] )
{
        char    *pattern;
        DIR     *dir;
        struct dirent    *entry;
        int     ret;
 
 
                setlocale(LC_ALL, "");
 
        dir = opendir(".");
        
        pattern = argv[1];
 
        if(dir != NULL){
                while( (entry = readdir(dir)) != NULL){
                        ret = fnmatch(pattern, entry->d_name, 
                                FNM_PATHNAME|FNM_PERIOD);
                        if(ret == 0){
                                printf("%s\n", entry->d_name);
                        }else if(ret == FNM_NOMATCH){
                                continue ;
                        }else{
                                printf("error file=%s\n", 
                                        entry->d_name);
                        }
                }
                closedir(dir);
        }
}
Глава 16, Поддержка национальных языков.
Функции fnmatch, regcomp, regerror, regexec, regfree.