Я пытаюсь выбрать) 9 в строке сс, заменить его) * 9C++ ошибка выражения регулярного выражений (необработанное исключение)
Я получаю необработанную ошибку выражения на 2-й линии (DEF из ее). Я пробовал все комбинации строк 2, о которых я могу думать (включая двойное экранирование d).
std::string ss ("1 + (3+2)9 - 2 ");
std::regex ee ("(\\)\d)([^ ]");
std::string result;
std::regex_replace (std::back_inserter(result), ss.begin(), ss.end(), ee, "*$2");
std::cout << result;
Знаете ли вы, что '«\ d» 'есть? [Потому что это не означает «цифра», как большинство регулярных выражений] (http://en.cppreference.com/w/cpp/language/escape). Попробуйте избежать этой обратной косой черты. (Я ожидаю, что компилятор выдаст предупреждение об этом) – Cornstalks
Какую версию компилятора вы используете? – Mat
Я только что обновил описание, чтобы включить Я пробовал \\ d. В этой документации указано, что «\ d» является частью регулярного выражения C++ (что perl является стандартным типом regex): cplusplus.com/reference/regex/regex_replace/ - boost.org/doc/libs/1_58_0/libs/regex/doc /html/boost_regex/syntax/perl_syntax.html –