int main()
{
string text = "Call 123-4567 or 987-6543";
regex pattern(R"(\d{3}-\d{4})");
// 使用迭代器
auto begin = sregex_iterator(text.begin(), text.end(), pattern);
auto end = sregex_iterator();
for (auto it = begin; it != end; ++it)
{
cout << "Found: " << it->str() << endl;
}
return 0;
}
// 输出:
// Found: 123-4567
// Found: 987-6543
int main()
{
string text = "I have 2 apples and 3 oranges";
// 替换所有数字
string result = regex_replace(text, regex(R"(\d+)"), "X");
cout << result << endl; // I have X apples and X oranges
// 使用捕获组
string text2 = "2024-12-25";
string result2 = regex_replace(text2,
regex(R"((\d{4})-(\d{2})-(\d{2}))"),
"$2/$3/$1"); // $1, $2, $3 引用捕获组
cout << result2 << endl; // 12/25/2024
return 0;
}
vector<string> split(const string& text, const string& delim)
{
vector<string> tokens;
regex re(delim);
auto begin = sregex_token_iterator(text.begin(), text.end(), re, -1);
auto end = sregex_token_iterator();
for (auto it = begin; it != end; ++it)
{
tokens.push_back(*it);
}
return tokens;
}
int main()
{
string text = "apple,banana;cherry:date";
auto parts = split(text, "[,;:]"); // 多种分隔符
for (const auto& p : parts)
{
cout << p << endl;
}
return 0;
}
struct Link
{
string url;
string text;
};
vector<Link> extractLinks(const string& html)
{
vector<Link> links;
regex pattern(R"(<a\s+href="([^"]+)"[^>]*>([^<]*)</a>)");
auto begin = sregex_iterator(html.begin(), html.end(), pattern);
auto end = sregex_iterator();
for (auto it = begin; it != end; ++it)
{
links.push_back({(*it)[1], (*it)[2]});
}
return links;
}
int main()
{
string html = R"(
<a href="http://example.com">Example</a>
<a href="http://test.com">Test</a>
)";
auto links = extractLinks(html);
for (const auto& link : links)
{
cout << link.text << ": " << link.url << endl;
}
return 0;
}