C ++ std :: regex如何修复error_complexity?

赫伯特洛

我曾经std::regex匹配过一个字符串。

我对正则表达式的定义是:

regex reg("(-?\\d+,?){2,}", regex::icase)

测试字符串是:

5,3240,7290,11340,-3240,-7290,-11340

我使用的std函数regex_match()以下是我得到的错误。

regex_error(error_complexity):尝试与正则表达式进行匹配的复杂性超过了预设水平。

我该如何解决该问题?我的编译器是VS2013。

威克多·斯特里比尤(WiktorStribiżew)

您可以将包含,?的组“展开”为更线性的模式以降低复杂度- ",?-?\\d+(?:,-?\\d+)+"

参见C ++演示

#include <iostream>
#include <regex>
using namespace std;

int main() {
    regex reg(",?-?\\d+(?:,-?\\d+)+");
    string s("5,3240,7290,11340,-3240,-7290,-11340");
    if (regex_match(s, reg)) {
        std::cout << "Matched!"; 
    }
    return 0;
}

现在,模式匹配:

  • ,? -可选的逗号
  • -? -可选的连字符
  • \\d+ -1个或更多数字
  • (?:,-?\\d+)+ -1个或多个序列匹配
    • , -在段落中
    • -?\\d+ - 看上面。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++ 11 std :: regex替代

来自分类Dev

C ++:如何复制std :: string *

来自分类Dev

C ++ std :: regex垃圾管道error_escape异常

来自分类Dev

C ++ std :: regex与预期的不匹配

来自分类Dev

带有std :: regex的大型程序C ++

来自分类Dev

C ++。如何使用std :: regex替换括号内的任何内容?

来自分类Dev

如何理解C ++中的std :: distance

来自分类Dev

如何实现std :: vector插入?C ++

来自分类Dev

C ++如何从std :: string删除\ 0 char

来自分类Dev

如何中断其他std :: threads C ++

来自分类Dev

如何使用C ++ 20 std :: format?

来自分类Dev

C ++:如何使由std :: function索引的容器?

来自分类Dev

c ++如何从向量中获取.std :: future?

来自分类Dev

用于std :: sin的sin的C ++别名-需要草率的快速修复

来自分类Dev

如何使用std :: regex?

来自分类Dev

C ++的std :: regex是否等效于Python的re.MULTILINE?

来自分类Dev

C ++使用std :: regex逐行拆分字符串

来自分类Dev

使用C ++ 11的std :: regex麻烦填充子匹配

来自分类Dev

C ++ 11正则表达式抛出std :: regex_error

来自分类Dev

模板C ++:如何访问std :: map和std :: set的迭代器值?

来自分类Dev

在C ++中重写<<运算符时如何正确遵守std :: setw和std :: fill

来自分类Dev

如何编写将模板限制为std :: map和std :: unordered_map的C ++概念

来自分类Dev

我应该如何使用c ++处理“ std :: cerr”和“ std :: cin.fail()”?

来自分类Dev

C ++如何通过套接字发送const std :: vector <std :: uint8_t>?

来自分类Dev

如何在 C++ 中访问 std::list 中的 std::function

来自分类Dev

Compilation error when defining and using std::map in C++

来自分类Dev

C++ std::async 遇到 system_error?

来自分类Dev

C ++ std对与向量加速

来自分类Dev

STL std :: find()C ++

Related 相关文章

热门标签

归档