2016-10-22 3 views
0

std::regex_replace,
"$"를 사용하여 단어의 끝을 일치시킨 다음 추가 문자를 추가 할 수 있습니다.

std::cout << std::regex_replace("word",std::regex("$"),"s") << '\n'; 
//prints: words 

결과가 원래 입력과 다르므로 정규식이 일치했다고 가정했습니다. 그러나

,

std::cout << std::boolalpha; 
std::cout << std::regex_match("word",std::regex("$")) << '\n'; 
//prints: false 

은 어떻게 정규 표현식이 일치하지 않음을 할 수있다, 그러나 regex_replace는 교환을 할 수 있었다?


은 또한 0 개 이상의 문자에 대한 *를 추가했지만, 그 예외가 던져 : 만 성공적으로 전체 문자 순서에 정규 표현식을 일치합니다 regex_match

std::cout << std::regex_match("word",std::regex("*$")) << '\n'; 
    std::cout << std::regex_replace("word",std::regex("*$"),"s") << '\n'; 

답변

1

주 반면에 std :: regex_search는 서브 시퀀스와 성공적으로 매칭됩니다.

일치하는 하위 시퀀스에 대해 regex_search을 입력해야합니다. $은 비어 있지 않은 문자열의 전체와 일치하지 않지만 비어 있지 않은 문자열의 (길이가 0 인) 부분 문자열과 일치합니다.

관련 문제