Как указать } (закрывающая фигурная скобка) в регулярном выражении boost?

Я использую библиотеку boost 1.54 в своей программе. Моя задача состоит в том, чтобы расширить некоторые шаблоны в строке.

Один из таких случаев: если в строке найдена закрывающая фигурная скобка }, замените ее на >.

Я написал следующее регулярное выражение в своем коде.

boost::wregex rightbrace(L"\}"); // replace this by >

strText = boost::regex_replace(strText, rightbrace, L">");

Мой код компилируется нормально. Но моя программа вылетает, когда она встречает первый оператор, она вылетает со следующим исключением

Необработанное исключение по адресу 0x7599c41f в Compress.exe: исключение Microsoft C++: boost::exception_detail::clone_impl > @ 0x0018fa54

Поскольку } является специальным символом, я избежал его с помощью символа \.

Может ли кто-нибудь сказать мне, в чем здесь проблема?


person Ravi Chandra    schedule 27.09.2013    source источник


Ответы (1)


Вы экранировали } для повышения, но вам также нужно экранировать escape-символ \ для компилятора.

boost::wregex rightbrace(L"\\}");
person Jonathan Potter    schedule 27.09.2013