Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 regex_error

<시간/>

정규식 라이브러리에는 정규식과 관련된 다양한 메서드와 기능이 있습니다. 여기에서 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
의 코드입니다.