terminate called after throwing an instance of ‘std::regex_error‘

古城微笑少年丶 2022-11-20 04:52 171阅读 0赞

项目场景:

  1. #include <iostream>
  2. #include <regex>
  3. using namespace std;
  4. int main()
  5. {
  6. regex r1("S");
  7. printf("S works.\n");
  8. regex r2(".");
  9. printf(". works.\n");
  10. regex r3(".+");
  11. printf(".+ works.\n");
  12. regex r4("[0-9]");
  13. printf("[0-9] works.\n");
  14. return 0;
  15. }

问题描述:

  1. S works.
  2. . works.
  3. .+ works.
  4. terminate called after throwing an instance of 'std::regex_error'
  5. what(): regex_error
  6. Aborted

解决分析:

该错误是因为默认情况下创建正则表达式对表达式使用ECMAScript语法,该表达式不支持括号。应该使用basicor 标志来声明表达式:

  1. std::regex r4("[0-9]", std::regex_constants::basic);

发表评论

表情:
评论列表 (有 0 条评论,171人围观)

还没有评论,来说两句吧...

相关阅读