Thư viện regex có các phương thức và tính năng khác nhau liên quan đến biểu thức chính quy. Ở đây chúng ta sẽ thấy một số regex_errors. Chúng cũng có mặt tại thư viện regex. Trong quá trình thực thi một số biểu thức chính quy, chúng tôi gặp một số lỗi. Lỗi đó được đề cập ở đây.
| Cờ | Lỗi |
|---|---|
| error_collate | Trong Regex, các tên có đối chiếu không hợp lệ. |
| error_ctype | Trong Regex, có một tên lớp ký tự không hợp lệ. |
| error_stack | Không đủ bộ nhớ để xác định regex có thể khớp hay không. |
| error_space | Chuyển đổi thành Máy trạng thái hữu hạn, khi bộ nhớ không đủ |
| error_badrepeat | Chuỗi có từ chỉ định lặp lại (*? + {) không đứng trước biểu thức chính quy hợp lệ. |
| error_complexity | Độ phức tạp của một đối sánh đã cố gắng so với regex đã vượt quá mức đặt trước |
| error_range | Chứa phạm vi ký tự không hợp lệ. |
| error_badbrace | regex chứa các dấu ngoặc nhọn không khớp nhau {và}. |
| error_brace | regex chứa phạm vi không hợp lệ giữa các dấu ngoặc nhọn {và}. |
| error_paren | regex chứa các dấu ngoặc đơn không khớp (và). |
| error_brack | regex chứa các dấu ngoặc vuông không khớp ([và]). |
| error_backref | regex loại trừ tham chiếu ngược không hợp lệ. |
| error_escape | Regex không cho phép bất kỳ ký tự thoát không hợp lệ nào hoặc một ký tự thoát theo sau. |
Ví dụ
#include <iostream>
#include <regex>
int main() {
try {
std::regex re("[A-Z][0"); //an error is present
} catch (const std::regex_error& err) {
std::cout << "There is an error. The error is: " << err.what() << '\n';
if (err.code() == std::regex_constants::error_brack) {
std::cout << "This is the code of error_brack\n";
}
}
} Đầu ra
There is an error. The error is: Unexpected character in bracket expression. This is the code of error_brack