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.