C++ Primer 5th笔记(chap 17 标准库特殊设施)正则表达式错误
生活随笔
收集整理的這篇文章主要介紹了
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: 41.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笔记(cha
- 下一篇: C++ Primer 5th笔记(cha