1. regex란?
regex는 문자열에서 특정 패턴을 찾는 기능이다.
//예를 들면:
숫자가 있는지
전화번호 형식인지
이메일 형식인지
특정 문자 제거
//같은 작업을 쉽게 할 수 있다.
//사용 헤더
#include <regex>
2. regex 기본 구조
// 기본형태
regex 패턴변수("정규표현식");
// 예시
regex pattern("[0-9]+");
// 의미
숫자가 1개 이상 반복되는 패턴
3. 가장 중요한 함수 3개
| 함수 | 의미 |
| regex_match() | 문자열 전체 검사 |
| regex_search() | 문자열 안 일부 검색 |
| regex_replace() | 문자열 치환 |
- regex_match()
- regex_match()는 문자열 전체가 패턴과 일치하는지 검사한다. 즉, 문자열 전체를 확인한다.
//기본 형태 regex_match(문자열, 패턴) 의미: 문자열이, 패턴과 일치하냐? => 결과는 true, false로 나온다. // 예제 #include <iostream> #include <regex> using namespace std; int main() { string s = "12345"; regex pattern("[0-9]+"); // 숫자가 1개 이상을 의미 if(regex_match(s, pattern)){ cout << "숫자만 있는 문자열"; } else{ cout << "숫자가 아닌 문자가 포함됨"; } } // 출력: 숫자만 있는 문자열 - regex_search()
- regex_search()는 문자열 안에 특정 패턴이 포함되어 있는지 검사한다. 문자열 일부만 일치해도 true가 나온다.
regex_match() 와 차이점// 기본 형태 regex_search(문자열, 패턴) 의미: 문자열 안에 패턴과 일치하는 부분이 있어? => 결과는 true, false로 나온다.함수 검사방식 regex_match() 문자열 전체 검사 regex_search() 문자열 일부 검색 // 예제 #include <iostream> #include <regex> using namespace std; int main() { string s = "abc123"; regex pattern("[0-9]+"); if(regex_search(s, pattern)){ cout << "숫자가 포함되어 있음"; // 실행결과: 숫자가 포함되어 있음 } else{ cout << "숫자가 없음"; } }
- regex_replace()
- regex_replace()는 특정 패턴을 다른 문자열로 변경한다. 문자 제거, 공백 제거 등에 자주 사용된다.//기본형태 regex_replace(문자열, 패턴, 바꿀문자열) 의미: 문자열 안에 패턴과 일치하는 부분을 바꿀문자열로 변경 => 결과는 변경된 값// 예제 #include <iostream> #include <regex> using namespace std; int main() { string s = "abc123def"; regex pattern("[0-9]+"); string result = regex_replace(s, pattern, ""); cout << result; // 실행결과 : abcdef }
4. 자주 사용하는 정규표현식 문법
정규표현식은 보통 문자 범위와 반복 조건을 조합해서 사용한다. 예를 들어 [0-9]+는 숫자가 1개 이상 반복되는 패턴을 의미한다.
| 구분 | 문법 | 의미 | 예시 |
| 문자 범위 | [0-9] | 숫자 1개 | 1, 5, 9 |
| 문자 범위 | [a-z] | 소문자 1개 | a, b, z |
| 문자 범위 | [A-Z] | 대문자 1개 | A, B, Z |
| 문자 범위 | [a-zA-Z] | 영어 알파벳 1개 | a, B, z |
| 문자 범위 | [가-힣] | 한글 1글자 | 가, 나, 힣 |
| 반복 표현 | + | 1개 이상 반복 | [0-9]+ |
| 반복 표현 | * | 0개 이상 반복 | [0-9]* |
| 반복 표현 | {3} | 정확히 3개 | [0-9]{3} |
| 반복 표현 | {2,4} | 2개 이상 4개 이하 | [0-9]{2,4} |
| 축약 표현 | \\d | 숫자 | [0-9]와 같음 |
| 축약 표현 | \\s | 공백 | 띄어쓰기, 탭 |
| 기타 | . | 아무 문자 1개 | a.c → abc, a1c |
- 사용 예시
regex pattern("[0-9]+"); // 숫자가 1개 이상 regex pattern("[a-zA-Z]+"); // 영어 알파벳이 1개 이상 regex pattern(R"(010-\\d{4}-\\d{4})"); // 010-숫자4개-숫자4개 regex pattern("a.c"); // a와 c 사이에 아무 문자 1개 // 예: abc, axc, a1c
5. 주의할 점
\d, \s처럼 역슬래시가 들어간 표현은 C++ 문자열에서 아래처럼 \\를 한 번 더 써야 한다.
regex pattern("\\d+");
// 하지만 R"()"를 사용하면 더 깔끔하게 작성할 수 있다.
regex pattern(R"(\d+)");
6. 최종 요약
regex는 문자열에서 특정 패턴을 찾거나 검사하거나 변경할 때 사용하는 기능이다. 핵심 함수는 3가지이다.
| 함수 | 역할 |
| regex_match() | 문자열 전체가 패턴과 일치하는지 검사 |
| regex_search() | 문자열 안에 패턴이 일부라도 있는지 검사 |
| regex_replace() | 패턴과 일치하는 부분을 다른 문자열로 변경 |
// 정리하면 다음과 같다.
regex_match() // 전체 검사
regex_search() // 부분 검색
regex_replace() // 문자열 치환'언어 문법정리 > c++' 카테고리의 다른 글
| [C++] map 문법 총정리 (0) | 2026.05.30 |
|---|---|
| [C++] insert 함수 정리(set, vector, map) (0) | 2026.05.23 |
| [C++] reverse() 함수 정리 (0) | 2026.05.16 |
| [C++] vector 원하는 구간만 자르기 (0) | 2026.05.16 |
| [C++] 대소문자 변환 방법 정리(함수, ASCII 코드 사용) (0) | 2026.05.11 |
