Подскажите пожалуйста, в чем я(или не я) не прав? Цель этой небольшой тестовой программки - найти в строке все подстроки, удовлетворяющие заданному регулярному выражению и вывести на экран номера позиций начала и конца совпавших подстрок:
/************************
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]
такой вот результат..
Второе совпадение не находится.