regex_error 存在于标头 “regex” 和类 regex_error 内。它帮助我们了解程序执行过程中抛出的错误,它定义了正则表达式库中异常对象的类型,还说明了basic_regex对象的构造或使用中的错误。它在构造一个用于保存错误值的对象方面发挥着重要作用,它继承自 std::Exception
错误有十三种类型,如下所示:
FLAGS | ERRORS |
---|---|
error_collate | 该表达式的元素名称具有无效排序规则。 |
error_ctype | 该表达式具有无效的字符类名称。 |
error_stack | 如果没有足够的内存来确定正则表达式是否可以匹配给定的字符序列。 |
error_space | 当内存不足时,会发生这种情况以转换为有限状态机。 |
error_badrepeat | 它包含一个重复说明符 (*?+{),前面没有有效的正则表达式。 |
error_complexity | 尝试匹配正则表达式的复杂性超出了预设级别 |
error_range | 当包含无效字符范围时。 |
error_badbrace | 表达式在大括号 { 和 } 之间包含无效范围。 |
error_brace | 该表达式包含不匹配的大括号 { 和 }。 |
error_paren | 该表达式包含不匹配的括号 ( 和 )。 |
error_brack | 该表达式包含不匹配的括号([ 和 ])。 |
error_backref | 该表达式不包括无效的反向引用。 |
error_escape | 该表达式不允许任何无效的转义字符或尾随转义。 |
error_escape | 该表达式不允许任何无效的转义字符或尾随转义。 |
下面是一个简单的程序,演示了regex-error。
程序1:
// Program to demonstrate the error
int main()
{
#include <iostream>
#include <regex>
int main()
{
try {
std::regex re("[1-9][0");
}
catch (const std::regex_error& err) {
std::cout << "There was a regex_error caughted: "
<< err.what() << '\n';
if (err.code() == std::regex_constants::error_brack) {
std::cout << "The code gives an error_brack\n";
}
}
}
return 0;
}
输出:
regex_error caught: Unexpected character in bracket expression. The code gives an error_brack
程序2:
// Program to demonstrate no error
#include <iostream>
#include <regex>
int main()
{
try {
std::regex re("[A-Z][bcd] ");
}
catch (const std::regex_error& er) {
std::cout << "regex_error caught: "
<< er.what() << '\n';
if (er.code() == std::regex_constants::error_brack) {
std::cout << "The code was this is the error error_brack\n";
}
}
}
注意:没有输出,因为没有错误。
相关用法
- C++ regex_iterator()用法及代码示例
- C++ remquo()用法及代码示例
- C++ remainder()用法及代码示例
- C++ realloc()用法及代码示例
- C++ remove()用法及代码示例
- C++ rename()用法及代码示例
- C++ rewind()用法及代码示例
- C++ real()用法及代码示例
- C++ rename用法及代码示例
- C++ reference_wrapper用法及代码示例
- C++ round()用法及代码示例
- C++ rint()用法及代码示例
- C++ raise()用法及代码示例
- C++ ratio_equal()用法及代码示例
- C++ ratio_greater()用法及代码示例
- C++ ratio_greater_equal()用法及代码示例
- C++ ratio_less()用法及代码示例
- C++ ratio_less_equal()用法及代码示例
- C++ ratio_not_equal()用法及代码示例
- C++ rint(), rintf(), rintl()用法及代码示例
- C++ rotate用法及代码示例
- C++ cos()用法及代码示例
- C++ sin()用法及代码示例
- C++ asin()用法及代码示例
- C++ atan()用法及代码示例
注:本文由纯净天空筛选整理自Pushpanjali chauhan大神的英文原创作品 regex_error in C++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。