C++ Linux开发中如何使用正则表达式
在C++的Linux开发环境中,正则表达式处理一直是个让人又爱又恨的话题。C++11引入的库,算是终于把这个短板补齐了。下面就来聊聊实际怎么用,顺便给个能跑起来的例子。 先确认一下编译器环境。既然要用,编译器必须支持C++11或更高版本。编译时记得加上-std=c++11(或更高版本)标志,这一步不
在C++的Linux开发环境中,正则表达式处理一直是个让人又爱又恨的话题。C++11引入的库,算是终于把这个短板补齐了。下面就来聊聊实际怎么用,顺便给个能跑起来的例子。

先确认一下编译器环境。既然要用,编译器必须支持C++11或更高版本。编译时记得加上-std=c++11(或更高版本)标志,这一步不能省。比如用g++的话,命令像这样:
g++ -std=c++11 main.cpp -o main
接下来,新建一个main.cpp文件,把下面这段代码写进去:
#include
#include
#include
int main() {
// 定义一个正则表达式,用来匹配电子邮件地址
std::regex email_regex(R"((\w+)(\.\w+)*@(\w+)(\.\w+)+)");
// 待搜索的文本
std::string text = "Please contact us at email@example.com for further information.";
// 使用std::sregex_iterator进行迭代匹配
auto begin = std::sregex_iterator(text.begin(), text.end(), email_regex);
auto end = std::sregex_iterator();
// 遍历并输出所有匹配项
for (std::sregex_iterator i = begin; i != end; ++i) {
std::smatch match = *i;
std::cout << "Found email: " << match.str() << std::endl;
}
return 0;
}
这段代码的逻辑很清楚:先构造一个std::regex对象,里面装着用来匹配邮箱的正则表达式;然后通过std::sregex_iterator在目标文本里查找所有匹配项,最后逐个输出到控制台。
编译完成后,运行程序:
./main
输出结果应该就是这样:
Found email: email@example.com
当然了,这只是一个热身示例。库远不止匹配这么简单,它还支持替换、分割字符串等操作,功能相当强大。如果想深入挖掘,最好的办法还是去翻翻C++的官方文档,那里有更完整的API说明和用法示例。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。















