标准::C++正则表达式中有最大组限制吗?

It's there max groups limit in std::regex of C++?

本文关键字:C++ 正则表达式 标准      更新时间:2023-10-16

代码如下:

当有31组时发现:

try
{
    regex re("(0)(1)(2)(3)(4)(5)(6)(7)(8)(9)(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)(m)(n)(o)(p)(q)(r)(s)(t)(u)", tr1::regex::icase);
}
catch (regex_error e)
{
    std::cout << e.what();
}

然而,我试图添加一个组(总共32个组),哎呀:

try
{
    regex re("(0)(1)(2)(3)(4)(5)(6)(7)(8)(9)(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)(m)(n)(o)(p)(q)(r)(s)(t)(u)(v)", tr1::regex::icase);
}
catch (regex_error e)
{
    std::cout << e.what();
}

捕获regex_error异常并打印

正则表达式错误

我在Windows 7上使用VisualStudio 2010

似乎有组的最大限制。我怎样才能打破限制?

我不确定windows版本,但gcc版本只有部分支持

http://gcc.gnu.org/onlinedocs/libstdc + +/手册/status.html # status.iso.2011

你看的是第28节。其他语言似乎能够匹配更多的组

也许可以尝试不同的引擎?

http://en.wikipedia.org/wiki/Comparison_of_regular_expression_engines