Skip to content
C++

Regular Expressions

std::regex matching and replacement.

By EZ4Code Team
regexregex

Code

#include <iostream>
#include <regex>
#include <string>

int main() {
    std::string text = "Phone: 138-1234-5678, Email: [email protected]";

    // Match
    std::regex phone_re(R"(\d{3}-\d{4}-\d{4})");
    std::smatch match;
    if (std::regex_search(text, match, phone_re)) {
        std::cout << "Phone: " << match.str() << "\n";
    }

    // Global match
    std::string s = "a1b2c3d4";
    std::regex digit_re(R"(\d)");
    auto begin = std::sregex_iterator(s.begin(), s.end(), digit_re);
    auto end = std::sregex_iterator();
    for (auto it = begin; it != end; ++it) {
        std::cout << it->str() << " ";
    }
    std::cout << "\n";

    // Replace
    std::string result = std::regex_replace(text, phone_re, "XXX-XXXX-XXXX");

    // Validate
    std::regex email_re(R"([\w.]+@[\w.]+\.\w+)");
    bool valid = std::regex_match("[email protected]", email_re);
    std::cout << "Email valid: " << std::boolalpha << valid << "\n";

    // Capture group
    std::regex date_re(R"((\d{4})-(\d{2})-(\d{2}))");
    std::smatch dm;
    if (std::regex_search("2024-01-15", dm, date_re)) {
        std::cout << "Year: " << dm[1] << " Month: " << dm[2]
                  << " Day: " << dm[3] << "\n";
    }

    return 0;
}

Explanation

std::regex provides regex matching, searching, replacement; regex_search finds; regex_match fully matches.

More C++ Snippets