C++ Primer 5th笔记(chap 17 标准库特殊设施)正则表达式错误

Posted thefist11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ Primer 5th笔记(chap 17 标准库特殊设施)正则表达式错误相关的知识,希望对你有一定的参考价值。

1. 指定或使用正则表达式时的错误

如果我们编写的正则表达式存在错误, 则在运行时标准库会抛出一个类型为regex 的异常

eg.

try {
    // alnum右括号少了一个, 构造函数会抛出异常
    regex r("[[:alnum:] + \\\\.(cpp | cxx | cc)$", regex::icase);
} catch (regex_error e) {
    cout << e.what() << "\\ncode: " << e.code() << endl;
}
输出:
regex_error (error_brack) :
The expression contained mismatched [ and ] .
code: 4

1.1 正则表达式错误类型

类型描述
error_collate无效的元素校对请求
error_ctype无效的字符类
error_escape无效的转义字符或无效的尾置转义
error_backref无效的向后引用
error_brack不匹配的方括号([或])
error_paren不匹配的小括号((或))
error_brace不匹配的花括号({或})
error_badbrace{}中无效的范围
error_range无效的字符范围(如[z-a])
error_space内存不足,无法处理此正则表达式
error_badrepeat重复字符(*、?、+或{)之前没有有效的正则表达式
error_complexity要求的匹配关于复杂
error_stack栈空间不足,无法处理匹配
  • code 成员编号从0开始

  • 应该努力避免创建很多不必要的regexo,特别是, 如果你在一个循环中使用正则表达式, 应该在循环外创建它,而不是在每步迭代时都编译它
    (构造一个 regex 对象以及向一个已存在的 regex 賦予一个新的正则表达式可能是非常耗时的。 为了最小化这种开销)

以上是关于C++ Primer 5th笔记(chap 17 标准库特殊设施)正则表达式错误的主要内容,如果未能解决你的问题,请参考以下文章

C++ Primer 5th笔记(chap 17 标准库特殊设施)输出补白

C++ Primer 5th笔记(chap 17 标准库特殊设施)bitset类型

C++ Primer 5th笔记(chap 17 标准库特殊设施)正则表达式

C++ Primer 5th笔记(chap 17 标准库特殊设施)tuple 返回多个值

C++ Primer 5th笔记(chap 17 标准库特殊设施)控制输入格式

C++ Primer 5th笔记(chap 17 标准库特殊设施)bitset操作