regex 라 이브 러 리

이 라 이브 러 리 는 내 가 손 을 쓰기 가 매우 어렵다. 정규 표현 식 만 해도 상당히 긴 내용 이 있다.여기 서 나 는 정규 표현 식 에 관 한 어떤 내용 도 토론 하지 않 고 이 라 이브 러 리 의 사용 에 전념 하기 로 결정 했다. 모든 세부 적 인 문제 도 토론 하지 않 기로 했다.
basic_regex
정규 표현 식 에 대해 일반적으로 미리 처리 해 야 한다. 예 를 들 어 문법 오 류 를 검사 하고 적당 한 최적화 등 이다.basic_regex 대상 은 표현 식 을 전문 적 으로 처리 한 다음 에 일치, 찾기, 교체 작업 을 제공 합 니 다.basic_regex 의 주요 구 조 는 다음 과 같다.
namespace boost {     template>      class basic_regex {         public:             explicit basic_regex (                 const charT* p,                 flag_type f = regex_constants::normal);    //가장 많이 사용 되 는 구조 방법. 그리고 다른 것 도 있다.           bool empty() const;    //인 스 턴 스 에 올 바른 정규 표현 식 이 포함 되 어 있 지 않 으 면 true 로 돌아 갑 니 다.            unsigned mark_count() const;        //표현 식 의 하위 표현 식 개 수 를 되 돌려 줍 니 다.
            flag_type flags()    const;             //대소 문자 무시, Perl 문법 등 설정 에 대한 마스크 를 되 돌려 줍 니 다.
            basic_string str() const;        //정규 표현 식 문자열 되 돌리 기    };
   typedef basic_regex regex;        //이 두 가 지 는 우리 가 자주 사용 하 는 대체 방식 이다.   typedef basic_regex wregex; }
일반적으로 basic regex 에 대한 조작 은 하나의 대상 을 구성 하 는 것 일 뿐 입 니 다. basic string 과 밀접 한 관 계 를 가지 기 때문에 구조 안의 string 을 구성 할 때 종류 가 많 습 니 다. 매 뉴 얼 을 찾 아 보면 알 수 있 습 니 다.
정규 표현 식 은 많은 간단 한 패턴 일치 알고리즘 과 달리 모든 일치 도 찾 을 수 있 고 하위 표현 식 의 일치 도 생 성 할 수 있 습 니 다. 모드 에서 괄호 (...) 로 정 의 된 모든 하위 표현 식 입 니 다. 하위 표현 식 의 일치 결 과 를 사용자 에 게 보고 하 는 방법 이 필요 합 니 다. 이것 은 정의 클래스 match_results (하위 표현 식 과 일치 하 는 질서 있 는 집합) 입 니 다.모든 하위 표현 식 매 칭 은 하나의 sub_match 유형의 대상 에 포함 되 어 있 습 니 다.
match_result
템 플 릿 클래스 match_results 는 정규 표현 식 이 결 과 를 나타 내 는 문자 배열 의 집합 을 표시 합 니 다. match_results 클래스 의 대상 은 알고리즘 regex_matchregex_search 에 전송 되 고 교체 기 regex_iterator 에 의 해 되 돌아 갑 니 다. 집합 된 저장 공간 은 필요 할 때 클래스 match_results 의 구성원 함수 에 의 해 신청 되 고 방출 됩 니 다.
보통 typedef 를 사용 한 다음 중 하나 입 니 다.
typedef match_results<const char*>              cmatch;
typedef match_results<const wchar_t*>           wcmatch;
typedef match_results<string::const_iterator>   smatch;
typedef match_results<wstring::const_iterator>  wsmatch

match results 의 사용 은 매우 기술 이 필요 합 니 다. 서로 다른 하위 표현 식 은 서로 다른 시각 에 얻 은 결과 가 다 를 수 있 습 니 다. 구체 적 인 예 시 를 참고 하 십시오.
regex match 템 플 릿 함수
나 는 그것 의 성명 을 열거 하지 않 았 다. 왜냐하면 리 셋 버 전이 너무 많 기 때문이다. (뒤의 자유 함수 상황 은 유사 하 다)일치 하면 true 로 돌아 갑 니 다. 일치 하 는 의미 에 주의 하 십시오. 전체 입력 문자열 이 정규 표현 식 과 일치 할 때 만 결과 가 진실 입 니 다. 하위 문자열 만 필요 하 다 면 regex search 를 사용 하 십시오. 많은 사람들 이 처음 사용 할 때 regex match 의 뜻 을 오해 합 니 다. 정확히 말 하면 정규 표현 식 언어 에서 언급 한 일치 성 은 regex search 에 대응 합 니 다. regex match 는 일치 하 는 결 과 를 되 돌려 주기 위해 match results 를 지정 할 수 있 습 니 다.
regex match 는 보통 포맷 검사 에 사 용 됩 니 다.
regex_search
이것 은 양 방향 교체 기 가 지정 한 범위 내 에서 주어진 정규 표현 식 을 검색 합 니 다. true 를 되 돌려 주 는 것 이 존재 합 니 다. regex match 와 마찬가지 로 match results 대상 을 지정 하여 결 과 를 저장 할 수도 있 습 니 다. regex search 를 사용 하 는 목적 은 일치 하 는 데 이 터 를 가 져 오 는 것 과 함께 match results 를 사용 하 는 것 을 피 할 수 없습니다. 또한 입력 문자열 을 사용 하 는 것 은 교체 기 입 니 다. s 를 사용 하 는 것 보다tring 이나 포인터 의 리 셋 버 전이 더 흔 합 니 다. while 순환 을 통 해 모든 일치 하 는 결 과 를 찾 을 수 있 습 니 다!
regex_replace
교 체 는 세 개의 regex 함수 중 가장 간단 한 것 입 니 다. 일반적인 상황 에서 교 체 된 표현 식 을 사용 하 는 것 은 검색 처럼 복잡 하지 않 습 니 다.
regex 라 이브 러 리 소결
나 는 이 장 을 대충 끝 냈 다. 왜냐하면 나 는 정규 표현 식 에 익숙 하지 않 고 실제로 사용 한 적 이 없 기 때문이다. 이 장 에는 두 가지 중요 한 함수 가 언급 되 지 않 았 다. regex iterator, regex token iterator.

좋은 웹페이지 즐겨찾기