Skip to content

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();    // 세번째 캡쳐 그룹
}
Clone this wiki locally