Regex_replace из библиотеки Boost не работает должным образом - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь удалить подстроку, следующую за шаблоном.

Я пытаюсь использовать библиотеку boost, поскольку она предоставляет regex_replace, которое, как я понял, должно заменять каждое вхождение регулярного выражения на заданную мной новую строку.

std::string s("m_value[0..3]");
boost::regex rgx("\[.*\]");
return boost::regex_replace(s, rgx, "");

Этот код возвращает m_value [03] вместо m_value. Есть идеи почему?

1 Ответ

2 голосов
/ 06 ноября 2019

Вы забыли избежать побега.

Чтобы добавить обратную косую черту в строках, вам понадобится две обратные косые черты:

boost::regex rgx("\\[.*\\]");

Или используйте необработанные строковые литералы:

boost::regex rgx(R"(\[.*\])");
...