-
Notifications
You must be signed in to change notification settings - Fork 2
2014 07 23 정규식
krikit edited this page Nov 26, 2014
·
1 revision
C++11에서는 표준 라이브러리로 정규식을 지원합니다. 문법은 여러가지를 지원한다고 하는데, 별도로 지정하지 않으면 디폴트로 ECMAScript 문법을 사용한다고 합니다.
std::regex rx("^(\\d{4})/(0?[1-9]|1[0-2])/(0?[1-9]|[1-2][0-9]|3[0-1])$");
std::regex_match("2014/07/23", rx); // 매치
std::regex_match("2014/July/23", rx); // 매치하지 않음
부분 문자열에 대해 괄호로 묶어서 표현하면 캡쳐 그룹으로 받을 수 도 있습니다.
std::regex rx("^(\\d{4})/(0?[1-9]|1[0-2])/(0?[1-9]|[1-2][0-9]|3[0-1])$");
std::string str("2014/07/23");
std::smatch grp;
if (std::regex_match(str, grp, rx)) {
std::string whole = grp[0].str(); // 매칭된 전체 문자열
std::string year = grp[1].str(); // 첫번째 캡쳐 그룹
std::string month = grp[2].str(); // 두분째 캡쳐 그룹
std::string day = grp[3].str(); // 세번째 캡쳐 그룹
}