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 返回多个值