Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Регулярные выражения. Builder6.

24K
06 ноября 2009 года
warobushek
32 / / 10.08.2008
Использую pcre_compile и pcre_exec в Builder6.
Почему-то не работают
^ - начало строки
$ - конец строки

Например, мне нужно проверить, что строка "aaajshfsdoiuaadfhdjaaa"
начинается с "aaa" и заканчивается на "aaa". Такой вид строки можно описать таким рег.выр-м ^aaa.*aaa$. Но, почему-то функция pcre_exec не возвращает совпадений. Уже перевел всю доку по этим функциям. Использую их так, как там и написано.
Вот мой код.
Код:
char *pattern = "^aaa.*aaa$";
       char *str = "aaajshfsdoiuaadfhdjaaa";
       pcre *re;
       int options = 0; //PCRE_ANCHORED;
       const char *error;
       int erroffset;
       re = pcre_compile (pattern, options, &error, &erroffset, NULL);
       if(!re)
       {
            Edit2->Text = "failed";
       }
       else
       {
             int count = 0;
             int ovector[30];
             count = pcre_exec  (re,  NULL, (char *)str, strlen(str), 0, ovector, 30);
             if (!count)
             {
                 Edit2->Text =  "bad";
             }
             else
             {
               Edit2->Text =  count;
               for (int c = 0; c < 2 * count; c += 2)
               {
                 if(ovector[c] < 0)
                 {
                    Memo1->Lines->Append("fuck");
                 }
                 else
                 {
                    Memo1->Lines->Append(ovector[c]);
                    Memo1->Lines->Append("/");
                    Memo1->Lines->Append(ovector[c+1]);
                 }
              }
            }
        }

P.S.: Пробовал и /^aaa.*aaa$/. Тоже не работает. :confused:
297
06 ноября 2009 года
koodeer
1.2K / / 02.05.2009
Если не ошибаюсь, проблема в следующем
 
Код:
if (!count)

Правильно будет
 
Код:
if (count<0)
24K
07 ноября 2009 года
warobushek
32 / / 10.08.2008
Нет, проблема не в этом.
Скорее проблема у меня на компе, т.к. запустил заново все заработало.
Мистика.:eek:
297
07 ноября 2009 года
koodeer
1.2K / / 02.05.2009
И всё же, всё же: функция pcre_exec в случае ошибки возвращает отрицательные значения. Ноль будет означать, если не ошибаюсь (сейчас под рукой нет этой библиотеки), что шаблону соответствует вся строка целиком.
24K
20 ноября 2009 года
warobushek
32 / / 10.08.2008
неа, это не так
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог