В контексте нашего проекта я должен преобразовать большое количество регулярных выражений Perl в статический код boost :: xpressive на c ++.
Моя проблема в том, что я не могу использовать вызов before(...)
с любым успехом.
Вот мой тестовый код:
#include <string>
#include <iostream>
#include <boost/xpressive/xpressive_static.hpp>
#include <boost/xpressive/regex_actions.hpp>
using namespace boost::xpressive;
int main()
{
std::string strInput = "&9-A02FEfoo";
std::string strResult = "failed";
sregex re;
smatch sm;
re = bos >> as_xpr("&9-A02FE") >> before("foo");
if(regex_match(strInput, sm, re))
{
strResult = "matched : " + sm[0].str();
}
std::cout << strResult << std::endl;
}
Это не помогает систематически, за исключением того, что я удаляю foo
из строки и изменяю вызов на before
на before(eos)
.
Обратите внимание, что я обязан использовать версию Boost 1.67.0.
Я что-то здесь не так сделал?
Это известная проблема?
Извините, я забыл указать тип переменной для re
.
Ожидаемый результат, очевидно, что вызов regex_match(...)
завершается успешно - чего он не делает в настоящее время,но следует согласно документации.