[c++] C++에서의 문자열에서 이메일 추출하는 방법
이 문서에서는 C++를 사용하여 문자열에서 이메일 주소를 추출하는 방법에 대해 설명합니다.
1. 정규표현식 사용
이메일 주소는 특정 패턴을 따르기 때문에 C++의 정규표현식을 사용하여 문자열에서 이메일을 추출할 수 있습니다. 아래는 간단한 예제입니다.
#include <iostream>
#include <regex>
#include <string>
int main() {
std::string text = "example@email.com, test@test.com";
std::regex email_regex(R"(\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b)");
std::smatch matches;
// 문자열에서 이메일 주소 추출
while (std::regex_search(text, matches, email_regex)) {
std::cout << "이메일: " << matches.str() << std::endl;
text = matches.suffix().str();
}
return 0;
}
위 예제에서 정규표현식을 사용하여 문자열에서 이메일 주소를 추출합니다.
2. 문자열 처리 함수 사용
C++의 문자열 처리 함수를 사용하여 문자열에서 이메일 주소를 추출할 수도 있습니다. 예를 들어, 아래와 같은 방법을 사용할 수 있습니다.
#include <iostream>
#include <string>
bool isEmailCharacter(char c) {
return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') || c == '.' || c == '@';
}
std::string extractEmail(const std::string& text) {
std::string email;
bool flag = false; // @ 이전에 이메일이 있음을 나타내는 플래그
for (char c : text) {
if (c == '@') {
flag = true;
}
if (isEmailChar(c) || (flag && c == '.')) {
email += c;
} else if (flag) {
break;
}
}
return email;
}
int main() {
std::string text = "example@email.com, test@test.com";
std::string email = extractEmail(text);
std::cout << "이메일: " << email << std::endl;
return 0;
}
위 예제는 문자열에서 이메일 주소를 추출하기 위해 사용할 수 있는 간단한 함수를 보여줍니다.
요약
C++에서는 정규표현식을 사용하거나 문자열 처리 함수를 작성하여 문자열에서 이메일 주소를 추출할 수 있습니다. 각각의 방법은 장단점이 있으니 상황에 맞게 선택하여 사용하면 됩니다.