Подскажите пожалуйста, кто разбирается. Есть код Код (Text): #include <iostream.h> #include <pcre.h> int main(){ char pattern[] = "e"; char str[] = "test"; const unsigned char *tables = NULL; setlocale (LC_CTYPE, (const char *) "ru."); tables = pcre_maketables(); pcre *re; int options = 0; const char *error; int erroffset; re = pcre_compile ((char *) pattern, options, &error, &erroffset, NULL); if (!re){ cout << "Failed\n"; } else{ int count = 0; int ovector[30]; count = pcre_exec (re, NULL, (char *) str, sizeof str, 0, 0, ovector, 30); if (!count){ cout << "No match\n"; } else{ for (int c = 0; c < 2 * count; c += 2){ if (ovector[c] < 0){ cout << "<unset>\n"; } else{ cout << ovector[c] << "/" << ovector[c + 1] << "\n"; } } } } return 0; } хорошо находит позицю буквы "е". Но если искать в строке, к примеру, "testerere" - то находит за 1 раз только 1 "е" и никак не хочет заполнить массив ovector всеми найденными совпадениями. Может какие флаги поставить?
С ходу могу предложить замещать уже найденные символы (подстроки) какими-либо другими нечитаемыми символами, запоминать позиции и заново повторять поиск. Но что-то подсказывает мне что есть вариант проще.
ShadOS Вариант проще - научиться пользоваться ключом /g Я уж и обёртку свою написал, которая что нужно делает, но всё равно Научиться нужно.