regex

web comdori·2021년 3월 26일
0

코딩테스트준비

목록 보기
4/4

정규표현식 일부 요약

  1. 기본연산자

    • . : 개행무자를 제외한 모든 문자
    • a : 문자 a
    • ab : 문자열 ab
    • x|y : x나 y
    • \특수문자 : ^+{}$()[]|-?.* 과 같은 특수문자
  2. 캐릭터 클래스

    • [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개
  3. 양적 연산자

    • x* : 0개 이상의 x
    • x+ : 1개 이상의 x
    • x? : 0이나 1개인 x
    • x{2} : x가 정확히 2개
    • x{2,5} : 2개에서 5개 사이의 x
  4. 이스케이프 문자

    • \n : 개행
    • \r : 캐리지 리턴(현재 줄의 맨 앞)
    • \t : 탭
  5. 위치 지정

    • ^ : 문자열의 처음
    • \b : 단어 경계
    • \B : 비단어 경계
    • $ : 문자열의 끝
  6. 그룹

    • (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;
}
profile
(wanna be a) Full-Stack Engineer

0개의 댓글