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