当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ regex_error用法及代码示例


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"; 
        } 
    } 
} 

注意:没有输出,因为没有错误。



相关用法


注:本文由纯净天空筛选整理自Pushpanjali chauhan大神的英文原创作品 regex_error in C++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。