[c++] C++에서의 정규 표현식과 서브매치
정규 표현식(regular expression)은 문자열에서 패턴을 찾거나 검색하기 위한 도구로, C++에서는
정규 표현식 기본 사용법
C++에서 정규 표현식을 사용하려면
#include <iostream>
#include <regex>
int main() {
std::string text = "Hello, my email is example@email.com";
std::regex pattern("[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}");
if (std::regex_search(text, pattern)) {
std::cout << "Email found!" << std::endl;
}
return 0;
}
위 코드에서는 “text” 문자열에서 이메일 주소를 찾기 위한 정규 표현식을 사용하고 있습니다.
서브매치(Submatch)
정규 표현식을 사용하여 패턴을 찾을 때, 매칭된 문자열 중에서 특정 부분을 추출하는 것이 가능합니다. 이를 서브매치(submatch)라고 합니다.
아래는 서브매치를 사용하여 이메일 주소를 찾고, 사용자 이름과 도메인을 추출하는 예제 코드입니다.
#include <iostream>
#include <regex>
int main() {
std::string text = "Hello, my email is example@email.com";
std::regex pattern("([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+\\.[a-zA-Z]{2,})");
std::smatch match;
if (std::regex_search(text, match, pattern)) {
std::cout << "Email found: " << match.str() << std::endl;
std::cout << "Username: " << match.str(1) << std::endl;
std::cout << "Domain: " << match.str(2) << std::endl;
}
return 0;
}
위 코드에서는 “match.str(1)”과 “match.str(2)”를 사용하여 각각 사용자 이름과 도메인을 추출하고 있습니다.
결론
C++에서는
참고 자료
- [cppreference.com -
](https://en.cppreference.com/w/cpp/header/regex)