當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。