Я только начинаю с boost и c ++ и пытаюсь понять поведение механизма регулярных выражений boost, когда дело доходит до совпадения пробелов. Если я использую код:
boost::regex rx(" ");
cout << regex_search(" ", rx);
чтобы соответствовать пробелам, тогда все работает как положено, и regex_search возвращает true. Однако, если я попытаюсь заменить регулярное выражение на «\ s», чтобы соответствовать всем пробельным символам, я никогда не получу совпадение, и следующий код всегда выводит false:
boost::regex rx("\\s");
cout << regex_search(" ", rx);
Что мне здесь не хватает?
Как и требовалось, вот мой полный контрольный пример:
#include <boost/regex.hpp>
#include <iostream>
using namespace std;
int main()
{
boost::regex rx("\\s", boost::regex::icase);
cout << regex_search(" ", rx);
}
Понял — я изначально использовал готовые библиотеки из ascend4.org/Binary_installer_for_Boost_on_MinGW. После сборки Boost 1.52 код работает как положено. Попытка ускорить процесс ускоренной сборки обошлась мне в пару часов разочарования … Теперь я усвоил урок!
Других решений пока нет …