助推中的非贪婪匹配.Regex扩展Regex

Non-greedy match in a Boost.Regex extended regex

本文关键字:Regex 贪婪 扩展      更新时间:2023-10-16

我试图为boost regex引擎编写一个正则表达式,该正则表达式具有扩展语法,涉及非贪婪重复。然而,对于任何正则表达式(甚至像"a.*?b"一样简单),我得到一个"无效的前正则表达式"异常。

简单的boost::regex调用导致的问题:

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

它可以完美地与perl语法一起工作,但是使用基本或扩展以外的语法不幸不是一个选项(我不能修改构建regex对象的代码)。boost版本是1.39.

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

谢谢。

使用perl风格支持:

#include <boost/regex.hpp>
int main()
{
    boost::regex e("a.*?b", boost::regex_constants::perl);
    assert(boost::regex_match("acdefghijklmnopqb", e));
}

查看Live On Coliru