1

Народ подскажите книжонку с подробным описанием функций  smile ато замучался искать..

2

Справочник по регэкспам Джефри Фридла
http://www.filesonic.com/file/235888/reg_vyr.rar

Ничто не вечно под рутом

3

это всё хорошо) но нужно в С/С++
.net не тру  :rolleyes:

4

тру не тру, но по сути везде используется одна и таже система регэкспов (стандарт POSIX), различия минимальны, так что ковыряйте boost и Фридл в помощь bx))

Ничто не вечно под рутом

5

libpcre + маны к ней.

6

вот вам пример: http://drbatty.ru/sed/ch02s04.html#bugs_utf
что там непонятно?

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

7

#include <locale.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <regex.h>

#define ERRBUF_SIZE 1024
#define NMATCH 10

void error(int err_code, regex_t *rs)1
{
        char errbuf[ERRBUF_SIZE];
        if(!err_code)   return;
        regerror(err_code, rs, errbuf, ERRBUF_SIZE);
        fprintf(stderr, "regex error: %s\n", errbuf);
        regfree(rs);
        _exit(err_code);
}

int main(void)
{
        const char str[] = "тестов\xD1\xD1ая строчка. ABCDEFG";2
        const char regex[] = ".*";3
        regex_t rs;
        regmatch_t pmatch[NMATCH];
        char *lc = setlocale(LC_ALL, "ru_RU.UTF-8");4
        if(!lc)    return 77;
        printf("test string: `%s' (%s)\n", str, lc);
        int err = regcomp(&rs, regex, REG_EXTENDED);
        error(err, &rs);
        const char *ps = str;
        while(*ps)5
        {
                err = regexec(&rs, ps, NMATCH, pmatch, 0);
                error(err, &rs);
                int j;
                const char *ps2 = NULL;
                for(j = 0; j < NMATCH; j++)
                {
                        if(pmatch[j].rm_so < 0)
                                continue;
                        printf("Совпадение %d: %d...%d\t`", j, pmatch[j].rm_so, pmatch[j].rm_eo);
                        int i;
                        for(i = pmatch[j].rm_so; i < pmatch[j].rm_eo; i++)
                                printf("%c", ps[i]);
                        printf("'\n");
                        if(!ps2)
                                ps2 = ps + i;6
                }
                ps = ps2;
                if(!ps)    break;7
                printf("остаток: `%s'\n", ps);
        }
        regfree(&rs);
        return 0;
}
Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

8

regexec (const regex_t *restrict preg, const char *restrict string, size_t nmatch, regmatch_t pmatch [restrict], int eflags);

В pmatch и nmatch что именно попадает?
Я правильно понял:
если мы задаём регулярку не ограниченную ^ и $ то в массив попадут все "куски" совпавшие?