3
C++ 11 RegEx에 약간의 문제가 있습니다. 나는 greedynes에 관한 것 같아요.C++ 11 RegEx, non-greedy
다음은 약간의 샘플입니다.
#include <stdio.h>
#include <string>
#include <regex>
int main (void)
{
std::string in="{ab}{cd}[ef]{gh}[ij][kl]"; // the input-string
std::regex rx1 ("(\\{.+?})(.*)", std::regex::extended); // non-greedy?
std::smatch match;
if (regex_match (in, match, rx1))
{
printf ("\n%s\n", match.str(1).c_str());
}
return 0;
}
나는 출력
{ab}
을 기대. 는하지만 욕심이 아니라 함께 내가 할 경우 내가, 내가 얻을 결과를 기대
{ab}{cd}[ef]{gh}
있어? . + 후에. 욕심이 없어야할까요?
내 생각에 무슨 문제가 있습니까? 도움 주셔서 감사합니다!
크리스
이 왜 그러나 당신이 닫는 중괄호를 탈출하지 않는'\\ {'로 여는 중괄호를 탈출 할 보는가? – Bobulous
@Bobulous는 이전 패턴을 반복하는 데 도움이되는 정규식 특수 문자입니다 .. –
'std :: regex :: extended'를 사용해서는 안됩니다. 정규식 POSIX ERE를 준수하며 지연 량 한정 기호를 지원하지 않습니다. –