Форум кафедры Техники и Электрофизики Высоких Напряжений

Онлайн-сообщество ТВНщиков
Гостям форума:

Добро пожаловать на форум по технике высоких напряжений!
Для получения доступа ко всем разделам необходимо зарегистрироваться


Текущее время: 19 июн 2018, 22:49

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Тема о регулярных выражениях
СообщениеДобавлено: 13 мар 2018, 23:26 
Не в сети
Site Admin

Зарегистрирован: 03 сен 2008, 16:09
Сообщения: 4251
Откуда: Д-3
Сегодня на занятии столкнулись с ошибкой времени выполнения при задании некоторректного регулярного выражения. Я обещал разобраться, привожу краткие результаты разбирательства.

Поскольку объект типа regex создается на этапе выполнения программы, то сделать проверки на этапе компиляции нельзя. Способ обработки возникшей ошибки есть только один - обработка исключений. Сделать это можно так:

Код:
   string s = "322-223";
   smatch m;
   try
   {
      regex re("*\\d+"); // регулярное выражение с ошибкой
      if (regex_search(s, m, re))
         cout << m[0] << endl;
   }
   catch (regex_error e)
   {
      cout << e.what() << endl;
   }


Здесь не только отлавливается исключение, но еще и выводится сообщение с причиной ошибки.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB