정규식 라이브러리에는 정규식과 관련된 다양한 메서드와 기능이 있습니다. 여기에서 regex_errors를 볼 수 있습니다. 이것들은 regex 라이브러리에도 있습니다. 일부 정규식을 실행하는 동안 몇 가지 오류가 발생합니다. 그 오류는 여기에 언급되어 있습니다.
| 플래그 | 오류 |
|---|---|
| error_collate | 정규식에서 데이터 정렬이 잘못된 이름입니다. |
| 오류_ctype | 정규식에 잘못된 문자 클래스 이름이 있습니다. |
| error_stack | 정규식을 일치시킬 수 있는지 여부를 판별하는 데 메모리가 충분하지 않습니다. |
| error_space | 메모리가 부족할 때 유한 상태 기계로 변환 |
| 오류_badrepeat | 문자열 앞에 유효한 정규 표현식이 없는 반복 지정자( *?+{)가 있습니다. |
| 오류_복잡도 | 정규식에 대해 시도한 일치의 복잡성이 사전 설정된 수준을 초과했습니다. |
| 오류_범위 | 잘못된 문자 범위가 포함되어 있습니다. |
| error_badbrace | 정규식에 일치하지 않는 중괄호 { 및 }가 있습니다. |
| error_brace | 정규식에 중괄호 {와 } 사이에 잘못된 범위가 있습니다. |
| error_paren | 정규식에 일치하지 않는 괄호( 및 )가 있습니다. |
| error_brack | 정규식에 일치하지 않는 대괄호([ 및 ])가 있습니다. |
| error_backref | 정규식은 유효하지 않은 역참조를 제외합니다. |
| error_escape | 정규식은 유효하지 않은 이스케이프 문자나 후행 이스케이프를 허용하지 않습니다. |
예시
#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";
}
}
} 출력
There is an error. The error is: Unexpected character in bracket expression. This is the code of error_brack의 코드입니다.