在Ubuntu系统中,C++使用正则表达式只需包含头文件,通过std::sregex_iterator迭代器遍历所有匹配结果,示例代码展示了如何高效匹配文本中的单词对,方法简洁且支持C++11及以上标准,适用于文本处理场景。
Ubuntu C++如何使用正则表达式
作者:技术拾光
时间:2026-07-12
浏览:73
文章目录
Ubuntu C++正则表达式入门:核心步骤与代码示例
在Ubuntu系统上用C++编写正则表达式,流程比想象中更简洁。核心操作仅需两步:包含必要的头文件,然后调用对应的迭代器或函数。以下代码展示了标准的入门用法,阅读后即可快速上手。

#include
#include
#include
int main() {
// 要匹配的文本
std::string text = "Hello, my name is John Doe and I am 30 years old.";
// 正则表达式模式
std::regex pattern(R"((\w+)\s(\w+))"); // 匹配两个单词,中间有一个空格
// 使用std::sregex_iterator进行迭代匹配
auto words_begin = std::sregex_iterator(text.begin(), text.end(), pattern);
auto words_end = std::sregex_iterator();
std::cout << "Found " << std::distance(words_begin, words_end) << " words:" << std::endl;
for (std::sregex_iterator i = words_begin; i != words_end; ++i) {
std::smatch match = *i;
std::string match_str = match.str();
std::cout << match_str << std::endl;
}
return 0;
}
这段代码使用了std::sregex_iterator,它会遍历文本中所有匹配的子串。正则表达式模式((\w+)\s(\w+))用于匹配“单词+空格+单词”的连续对。编译过程也很简单,在终端中执行:
g++ -o regex_example regex_example.cpp
然后运行:
./regex_example
输出结果如下:
Found 4 words:
Hello my
my name
name is
is John
John Doe
Doe and
and I
I am
am 30
30 years
years old
输出解读与模式调整提示
这里包含一个需要注意的细节——输出内容比预期更多。原因是该模式匹配连续的两个单词,而文本中存在大量相邻单词对,因此迭代器输出了所有相邻组合。如果需要匹配特定格式,例如“名字+年龄”,需要调整正则表达式。核心思路是:先定义std::regex对象,再通过迭代器或std::regex_match / std::regex_search完成匹配操作。后续只需根据实际需求修改模式即可。
实用工具推荐
电子包浆
使用 ›绿化、压缩、噪点和虚拟水印,自由调节做旧程度。
图片压缩
使用 ›选择画质和输出格式,预览压缩前后的大小。
相关文章