在我们项目的上下文中,我必须将大量perl regex转换为c ++中的boost :: xpressive静态代码。
我的问题是我无法成功使用呼叫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)
。
请注意,我必须使用1.67.0版本的boost。
我在这里做错了吗?
这是一个已知问题吗?
对不起,我忘记输入re
的变量类型。
显然,预期的结果是regex_match(...)
调用成功-目前尚不成功,但根据文档应该如此。