gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:22:24 24 4
gpt4 key购买 nike

我正在尝试使用涉及非贪婪重复的扩展语法为 boost 正则表达式引擎编写正则表达式。但是,对于任何正则表达式(甚至像“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

关于c++ - Boost.Regex 扩展正则表达式中的非贪婪匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24085087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com