[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++에서는 정규표현식을 사용하거나 문자열 처리 함수를 작성하여 문자열에서 이메일 주소를 추출할 수 있습니다. 각각의 방법은 장단점이 있으니 상황에 맞게 선택하여 사용하면 됩니다.

참고 자료