정규표현식 일부 요약
-
기본연산자
- . : 개행무자를 제외한 모든 문자
- a : 문자 a
- ab : 문자열 ab
- x|y : x나 y
- \특수문자 : ^+{}$()[]|-?.* 과 같은 특수문자
-
캐릭터 클래스
- [a-d] : a, b, c, d 중 문자 1개
- [^a-d] : a, b, c, d를 제외한 문자 1개
- \d : 숫자(digit) 1개
- \D : 숫자가 아닌 개체 1개
- \s : 공백 1개
- \S : 공백이 아닌 개체 1개
- \w : 알파벳 또는 숫자 1개
- \W : 알파벳이나 숫자가 아닌 개체1개
-
양적 연산자
- x* : 0개 이상의 x
- x+ : 1개 이상의 x
- x? : 0이나 1개인 x
- x{2} : x가 정확히 2개
- x{2,5} : 2개에서 5개 사이의 x
-
이스케이프 문자
- \n : 개행
- \r : 캐리지 리턴(현재 줄의 맨 앞)
- \t : 탭
-
위치 지정
- ^ : 문자열의 처음
- \b : 단어 경계
- \B : 비단어 경계
- $ : 문자열의 끝
-
그룹
- (x) : 캡처링 그룹
- (?:x) : 비캡처링 그룹
regex 사용
- std::regex_match(str, re)
- reg 패턴이 전체 str과 매칭여부 true, false 리턴
- std::regex_search(str, re)
- reg 패턴이 str내 존재여부 true, false 리턴
- std::regex_search(str, smatches, re)
- reg 패턴을 str내에서 찾아 smatches에 담아줌
vector<string> split(string result)
{
vector<string> results;
regex reg("[0-9]*[SDT][*#]*");
smatch what;
for (smatch m; regex_search(result, m, reg); result = m.suffix()) {
results.push_back(m.str());
}
return results;
}