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 중국어 웹사이트의 기타 관련 기사를 참조하세요!