The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Загадочное поведение ф-ции regexec, !*! OF462M, 22-Апр-03, 07:44  [смотреть все]
Подскажите пожалуйста, в чем я(или не я) не прав? Цель этой небольшой тестовой программки - найти в строке все подстроки, удовлетворяющие заданному регулярному выражению и вывести на экран номера позиций начала и конца совпавших подстрок:

/************************
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]

такой вот результат..  
Второе совпадение не находится.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру