Подскажите пожалуйста, в чем я(или не я) не прав? Цель этой небольшой тестовой программки - найти в строке все подстроки, удовлетворяющие заданному регулярному выражению и вывести на экран номера позиций начала и конца совпавших подстрок:/************************
test.c
*************************/#include <sys/types.h>
#include <regex.h>
#include <stdio.h>main()
{
regex_t regexpr;
regmatch_t pm[3]; // предполагаем не более 3-х совпадений
size_t n;
int i;
regcomp(®expr,"[abc]example",REG_EXTENDED);
switch(regexec(®expr,"hsvvaexamplewqbcdbexamplebxjzhv",n,pm,0))
{
case REG_NOMATCH:
printf("no match\n");
break;
default:
printf("Matches: %i\n",n);
for (i=0;i<=n-1;i++)
{
printf("[%i]",pm[i].rm_so);
printf("[%i]\n",pm[i].rm_eo - 1);
}
}
regfree(®expr);
return 0;
}stat# g++ -o test test.c
stat# ./test
Matches: 1
[4][11]такой вот результат..
Второе совпадение не находится.
Вроде regexec ведет себя правильно:pmatch[0] - все совпадение
pmatch[1] - 1-е выражение в скобках
pmatch[2] - 2-e -"- и т.д.