Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Mr. Hat
2 / 2 / 0
Регистрация: 17.02.2012
Сообщений: 68
#1

Компиляция шаблонов регулярных выражений (regex) - C++

27.03.2013, 21:22. Просмотров 516. Ответов 1
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
#include<regex>
using namespace std;
 
int main() {
    const string Dbl_p="[\\+|-]?((\\d+\\.?\\d*)|(\\.\\d+))([e|E][\\+|-]?\\d+)?";
                    //шаблон для вещественных чисел
 
    string s=Dbl_p+Dbl_p+Dbl_p+Dbl_p+Dbl_p+Dbl_p+Dbl_p+Dbl_p;
    regex pat=regex(s);
}
При попытке на последней строчке создать объект regex возникает ошибка (std::tr1::regex_error at memory location 0x0034d068.. - конкретно она появляется в функции _Compile() где-то в глубинах стандартной библиотеки. То же самое происходит, если неправильно записать шаблон - лишнюю скобку поставить, к примеру). Если убрать хотя бы один "+Dbl_p", ошибка исчезает. От длины строки s ничего не зависит, в нее можно 500 символов записать, и все будет нормально работать. Может, там есть ограниение на сложность выражений? Я могу, конечно, разбивать выражения на более мелкие и усложнять код, но мне кажется, что у этой проблемы должно быть более красивое решение.

И еще вопрос: как, имея строку в стиле языка C типа const char*, получить строку типа char* с таким же содержанием? Просто функция из WinAPI требует параметр типа char* (хотя по идее эта функция не меняет содержимое строки), и приходится использовать преобразование const_cast, но с этими преобразованиями вроде вообще не рекомендуется работать, если ты не пишешь драйвера для устройств. Есть какой-нибудь способ это сделать без того чтобы руками переписывать символы с одного места на другое?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2013, 21:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Компиляция шаблонов регулярных выражений (regex) (C++):

Синтаксис регулярных выражений в C++ - C++
Помогите пожалуйста.... Исходный текст - &quot;Miguel_Rivero: {FFCD00}текст&quot; преобразуется в - &quot;тест 10&quot; засчет обрабочика: ...

Синтаксис регулярных выражений - C++
Здравствуйте. Правильно ли написано выражение в данном случае? Работает не совсем корректно. #include &quot;stdafx.h&quot; #include &lt;regex&gt; ...

Организовать поиск по файлу с помощью регулярных выражений - C++
Как организовать поиск по файлу с помощью регулярных выражений? Подскажите хорошую статью.

Раздельная компиляция шаблонов классов - C++
При разделении шаблона класса на .h и .cpp линковщик ругается. Неужели в C++17 ещё не пофиксили это недоразумение и придётся писать всё в...

Достать из текста все совпадения с помощью регулярных выражений - C++
Здравствуйте помогите решить задачу. Есть текст : Set: wer=b5b0231b05825d0001; expires=Wed, 02 Aug 2017 10:23:00 GMT; Set:...

Экспорт шаблонов функций/методов и раздельная компиляция - C++
Возможен ли он в настоящее время? Если да, то как грамотно реализовать? Если нет, то какие возможны альтернативные решения (кроме...

1
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
28.03.2013, 13:30 #2
Цитата Сообщение от Mr. Hat Посмотреть сообщение
приходится использовать преобразование const_cast
Это нормальная практика для совместимости с кодом, который хочет получить параметр без const, несмотря на то, что параметр не модифицируется. Если есть подозрения на попытку модификации, то создайте копию исходной строки и передавайте ее.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2013, 13:30
Привет! Вот еще темы с ответами:

Различия использования регулярных выражений и генераторов парсеров в GCC и MSVC - C++
Я слышал что G++ и MSVC используют lex и bison для построения дерева токенов и парсинга. А клэнг свой какой то язык, который обрабатывает...

std::regex и boost::regex - C++
Что-то я не пойму что реализация их различна ? #include &lt;iostream&gt; #include &lt;string&gt; //#include &lt;regex&gt; //using namespace...

Написать парсер математических выражений с функцией упрощения этих выражений - C++
Люди, здравствуйте. Есть такая задача: написать упроститель выражений. На вход подается строка вида &quot;a*b+a*c&quot;, являющаяся корректным...

Создание и парсинг шаблонов для регулярных выражений - JavaScript
Доброе время суток,уважаемые посетители форума! Помогите пожалуйста написать след. регулярное выражение. Необходимо проверить строку на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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