Boost.Regex扩展正则表达式中的非贪婪匹配

时间:2014-06-06 15:07:35

标签: c++ regex boost

我正在尝试使用包含非贪婪重复的扩展语法为boost regex引擎编写正则表达式。但是对于任何正则表达式(甚至像“a。*?b”这样简单)我都会得到“无效的前置正则表达式”异常。

简单的boost ::正则表达式调用会导致问题:

boost::regex e("a.*?b", boost::regex_constants::extended);

它与perl语法完美配合,但遗憾的是,使用除basic或extended之外的语法不是一个选项(我无法修改构建regex对象的代码)。提升版本是1.39。

是否可以在扩展语法中使用非贪婪表达式?

感谢。

1 个答案:

答案 0 :(得分:1)

使用perl flavor支持:

#include <boost/regex.hpp>

int main()
{
    boost::regex e("a.*?b", boost::regex_constants::perl);

    assert(boost::regex_match("acdefghijklmnopqb", e));
}

查看 Live On Coliru