> 백엔드 개발 > C++ > C \의 std::regex를 사용하여 문자열에서 여러 정규식 일치 항목을 효율적으로 추출하려면 어떻게 해야 합니까?

C \의 std::regex를 사용하여 문자열에서 여러 정규식 일치 항목을 효율적으로 추출하려면 어떻게 해야 합니까?

Linda Hamilton
풀어 주다: 2024-11-29 21:23:11
원래의
412명이 탐색했습니다.

How Can I Efficiently Extract Multiple Regex Matches from a String Using C  's std::regex?

std::regex를 사용하여 여러 정규식 결과 일치

문자열에서 정규식 패턴의 여러 항목 일치는 std를 사용하여 수행할 수 있습니다. :정규식 라이브러리. 단일 작업으로 문자열 "first second third four"에서 모든 단어를 추출하려는 시나리오를 생각해 보십시오.

"(bS*b){0,}"를 사용하려는 초기 시도에서는 결과가 나오지 않았습니다. 반복 연산자 {0,}가 일치하지 않는 항목을 포함하여 0개 이상의 항목과 일치하여 빈 일치 항목이 발생하기 때문에 원하는 출력이 발생합니다.

이 문제를 해결하기 위해 지연 반복이라는 기술을 사용할 수 있습니다. 여기에는 정규식 검색을 수행하는 동안 문자열을 반복하는 작업이 포함됩니다. 다음은 예제 코드입니다.

#include <iostream>
#include <string>
#include <regex>

int main() {
    std::regex exp("(\b\S*\b)");
    std::smatch res;
    std::string str = "first second third forth";

    std::string::const_iterator searchStart(str.cbegin());
    while (std::regex_search(searchStart, str.cend(), res, exp)) {
        std::cout << (searchStart == str.cbegin() ? "" : " ") << res[0];
        searchStart = res.suffix().first;
    }
    std::cout << std::endl;
}
로그인 후 복사

이 코드에서는 다음 잠재적 일치의 시작점을 나타내는 searchStart를 사용하여 문자열을 반복합니다. 일치가 성공할 때마다 searchStart는 일치하는 하위 문자열의 끝으로 업데이트됩니다. 이를 통해 전체 문자열이 처리될 때까지 후속 일치 항목을 계속 검색할 수 있습니다. 이 코드의 출력은 다음과 같습니다.

first second third forth
로그인 후 복사

위 내용은 C \의 std::regex를 사용하여 문자열에서 여러 정규식 일치 항목을 효율적으로 추출하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿