boost :: xpressive静态使用before(...)不起作用

时间:2019-04-17 10:21:56

标签: c++ boost boost-xpressive

在我们项目的上下文中,我必须将大量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(...)调用成功-目前尚不成功,但根据文档应该如此。

0 个答案:

没有答案