Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти k-ое по порядку число среди элементов массива(Древесная сортировка) https://www.cyberforum.ru/ cpp-beginners/ thread1919862.html
Есть готовая лабораторная работа #include <iostream> using namespace std; #include <clocale> #include <conio.h> #include <time.h> int counter1; int counter2; int seach_medium(int L, int R,...
C++ Посоветуйте пожалуйста уроки по opengl и directx 12
Я хочу стать игровым программистом и хочу чтоб уроки были не очень сложные потому что я весь день искал уроки по directx 12 и не нашёл
Создание класса для оперированием большими числами C++
Здравствуйте форумчане помогите решить проблему, пытаюсь определить класс для работы с большими числами Написал сам класс (хз правильно или нет) написал функции которые с ним работают. Решил ...
C++ Код Китайской теоремы остатков Доброго времени суток. Помогите, пожалуйста. В учебнике Б.Штайера "Прикладная криптография" описывается код Китайской теоремы остатков на языке Си: int Chinese_remainder(size_t r, int *m, int *u) ... https://www.cyberforum.ru/ cpp-beginners/ thread1919621.html
C++ MPI рекурсивная функция https://www.cyberforum.ru/ cpp-beginners/ thread1919607.html
Доброй ночи, форумчане. Задача состоит в следующем: сделать композицию числа с помощью MPI (разбить, к примеру, число 5 на 5=5, 5 = 4 + 1, ... 5 = 1+ 4, ... 5 = 1 + 1 + 1+ 1+ 1). Рекурсивную...
Среднее арифметическое двумерного массива C++
Нужна функция аргументом,которой передается 2х мерный числовой массив.Результатом функции возвращается ср арифметическое для элементов массива(сумма всх элементов делиться на их к-во).
Определить класс "Точка на плоскости" C++
Объявить и определить класс – точка на плоскости: Данные: -координаты точки. Методы: -заполнение данных с клавиатуры; -вывод объекта на экран монитора; -определение расстояния между двумя...
C++ Как определить расстояние между минимальными значениями функций? Значение функции f1(x)=4*x*x+x-3 f2(x)=8*x*x*x+x*x+2*x-4. определены в точках x=x0(hx)С Определить расстояние между минимальными значениями функций f1(x) и f2(x). https://www.cyberforum.ru/ cpp-beginners/ thread1919588.html
C++ Вывести сумму всех четных чисел не превосходящих заданное число https://www.cyberforum.ru/ cpp-beginners/ thread1919587.html
Дано n значное число типа longint. 1.Число спросить у пользователя и проверить принадлежит ли оно запрашиваему типу данных 2 вывести его четные числа 3 вывести сумму всех четных чисел.
C++ Вычислить произведение ряда Квадратики это умножение (*) Пользуйтесь редактором формул внизу страницы P=\prod_{k=1}^{K}\frac{{(-1)}^{k}({k}^{2}+k+1)}{k!} https://www.cyberforum.ru/ cpp-beginners/ thread1919573.html
Эксперт С++
8421 / 3954 / 866
Регистрация: 15.11.2014
Сообщений: 8,904
14.02.2017, 16:24 0

Работа с регулярными выражениями и исключения

14.02.2017, 16:24. Показов 1763. Ответов 31
Метки (Все метки)

Ответ

Цитата Сообщение от Renji Посмотреть сообщение
с невероятно информативной строчкой "regex_error".
http://ideone.com/zlcpkO
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include<iostream>
#include <regex>
 
void DescriptionRegexError(const std::regex_error& e);
 
int main(int argc, char **argv)
{
  (void)argc; (void)argv;
 
 
  try {
      std::regex nameRegex("^[a-zA-Z][[:word:]]+");
      try {
        const auto r = std::regex_match("someDefaultName", nameRegex);
      }
      catch (const std::regex_error& e) {
        std::cout<<"invalid: const auto r = std::regex_match("someDefaultName", nameRegex);\n";
        DescriptionRegexError(e);
  }
 
  } 
  catch (const std::regex_error& e) {
    std::cout<<"invalid: std::regex nameRegex("^[a-zA-Z][[:word:]]+");\n";
    DescriptionRegexError(e);
  }
 
  std::cout<<"-----------------------\n";
}
 
void DescriptionRegexError(const std::regex_error& e)
{
      //std::cout << "regex_error caught: " << e.what() << '\n';
      //std::cout<< e.code() << '\n';
 
          if(e.code()==std::regex_constants::error_collate)
             std::cout << "the expression contains an invalid collating element name\n";   
          else if(e.code()==std::regex_constants::error_ctype)
             std::cout << "the expression contains an invalid character class name\n";
          else if(e.code()==std::regex_constants::error_escape)
             std::cout << "the expression contains an invalid escaped character or a trailing escape\n";
          else if(e.code()==std::regex_constants::error_backref)
             std::cout << "the expression contains an invalid back reference\n";
          else if(e.code()==std::regex_constants::error_brack)
             std::cout << "the expression contains mismatched square brackets ('[' and ']')\n";
          else if(e.code()==std::regex_constants::error_paren)
             std::cout << "the expression contains mismatched parentheses ('(' and ')')\n";
          else if(e.code()==std::regex_constants::error_brace)
             std::cout << "the expression contains mismatched curly braces ('{' and '}')\n";
          else if(e.code()==std::regex_constants::error_badbrace)
             std::cout << "the expression contains an invalid range in a {} expression\n";
          else if(e.code()==std::regex_constants::error_space)
             std::cout << "there was not enough memory to convert the expression into a finite state machine\n";
          else if(e.code()==std::regex_constants::error_badrepeat)
             std::cout << "one of *?+{ was not preceded by a valid regular expression\n";
          else if(e.code()==std::regex_constants::error_complexity)
             std::cout << "the complexity of an attempted match exceeded a predefined level\n";
          else if(e.code()==std::regex_constants::error_stack)
             std::cout << "there was not enough memory to perform a match\n";
 
#ifdef _MSC_VER  //microsoft specific
          else if(e.code()==std::regex_constants::error_parse)
             std::cout << "error_parse\n";
          else if(e.code()==std::regex_constants::error_syntax)
             std::cout << "error_syntax\n";
#endif
}
Добавлено через 1 минуту
Цитата Сообщение от MrGluck Посмотреть сообщение
std::string msg() const noexcept { return m_msg; }
бумс!

Кликните здесь для просмотра всего текста
std::string msg() const


Вернуться к обсуждению:
Работа с регулярными выражениями и исключения
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.02.2017, 16:24

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Проверка на наличие подстроки регулярными выражениями
Здравствуйте. С помощью регулярных выражений я пытаюсь проверить наличие подстроки. Для этого пишу...

Выбрать различные цифры из однотипных строк регулярными выражениями
есть много таких строк: &lt;AddOrder price=&quot;100.20&quot; orderId=&quot;199&quot; operation=&quot;BUY&quot; /&gt; &lt;DeleteOrder...

Обработка файов регулярными выражениями.
Задайте верное направление. Исходная задача. Необходимо обработать текстовый файл &quot;умным...

Работа с регулярными выражениями
Всем привет! У меня огромный код, который я хочу раскодировать регулярными выражениями. Подскажите...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.