新闻中心
c++ 正则表达式怎么用 c++ regex库匹配实例
C++中使用正则需包含头文件,自C++11起支持std::regex库,可用于模式匹配、搜索和替换;例如用std::regex_match验证邮箱格式合法性。

在C++中使用正则表达式需要包含 std::regex库,支持模式匹配、搜索、替换等操作。下面通过几个常见实例说明如何使用。
1. 匹配邮箱地址
判断一个字符串是否为合法邮箱格式:
#include <iostream>
#include <string>
#include <regex>
int main() {
std::string email = "test@example.com";
std::regex pattern(R"([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})");
if (std::regex_match(email, pattern)) {
std::cout << "邮箱格式正确\n";
} else {
std::cout << "邮箱格式错误\n";
}
return 0;
}
说明:regex_match要求整个字符串完全匹配模式。R"(...)" 是原始字符串字面量,避免转义字符问题。
2. 查找字符串中的数字
从文本中找出所有连续的数字:
#include <iostream>
#include <string>
#include <regex>
int main() {
std::string text = "年龄:25,工号:10086,工资:15000";
std::regex pattern(R"(\d+)");
std::smatch matches;
std::string::const_iterator start = text.begin();
std::string::const_iterator end = text.end();
while (std::regex_search(start, end, matches, pattern)) {
std::cout << "找到数字: " << matches[0] << "\n";
start = matches.suffix().first; // 移动到本次匹配结束位置
}
return 0;
}
说明:regex_search用于在字符串中查找子串匹配,配合迭代可找出所有匹配项。matches[0]表示完整匹配结果。
3. 字符串替换(去除多余空格)
将多个连续空格替换为单个空格:
Figma
Figma 是一款基于云端的 UI 设计工具,可以在线进行产品原型、设计、评审、交付等工作。
1371
查看详情
#include <iostream> #include <string> #include <regex> int main() { std::string str = "hello world C++"; std::regex pattern(R"( +)"); std::string result = std::regex_replace(str, pattern, " "); std::cout << "处理后: " << result << "\n"; // 输出: hello world C++ return 0; }
说明:regex_replace返回替换后的副本,原字符串不变。模式 + 匹配一个或多个空格。
4. 提取日期中的年月日
从格式化的日期字符串中提取各部分:
#include <iostream>
#include <string>
#include <regex>
int main() {
std::string date = "2025-04-05";
std::regex pattern(R"((\d{4})-(\d{2})-(\d{2}))");
std::smatch match;
if (std::regex_match(date, match, pattern)) {
std::cout << "年: " << match[1] << "\n";
std::cout << "月: " << match[2] << "\n";
std::cout << "日: " << match[3] << "\n";
}
return 0;
}
说明:括号表示捕获组,可通过match[1]、match[2]等访问对应子匹配内容。
基本上就这些常用操作。掌握regex_match、regex_search和regex_replace三个核心函数,再结合常用正则语法,就能应对大多数文本处理需求。
以上就是c++++ 正则表达式怎么用 c++ regex库匹配实例的详细内容,更多请关注其它相关文章!
# 就能
# 网站优化公司收费
# 淘宝产品其他网站推广
# 网站百度推广优化广告图片
# 无线店铺营销推广策略
# 昆明中小网站建设
# 传统行业网站优化策划
# 网站前期推广策划方案
# 培训网站建设收费
# 腾讯微博营销推广赚钱吗
# 秦皇岛无锡网站推广
# 中文网
# 相关文章
# 正则表达式
# 调试器
# 几个
# 头文件
# 运算符
# 多个
# 如何使用
# 邮箱
# stream
# ios
# c++
# ai
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
Win11怎么修改默认浏览器_Windows 11设置Chrome为默认
铁路12306的积分有效期是多久_铁路12306积分有效期说明
优化 Jest 模拟:强制未实现函数抛出错误以提升测试效率
html怎么运行外部js文件中的函数_运html外js文件函数法【技巧】
可靠CSGO开箱平台解析 CSGO开箱网合集
百度网盘网页版入口 百度网盘网页版官方登录网址
护手霜蹭到袖口上了如何清洗? 怎样避免留下一圈油印?
AO3同人作品网入口 AO3搜索引擎官网永久地址
C++ explicit关键字防止隐式转换_C++构造函数安全规范
优化Log4j2控制台输出性能:解决异步日志瓶颈
圆通快递查询实时追踪 圆通物流包裹状态快速查看
高德地图家和公司地址在哪设置 高德地图通勤路线设置方法【超详细】
深入理解J*a链表中的IPosition接口与使用
Composer如何解决json扩展缺失的错误
Word2013如何插入视频和音频媒体_Word2013媒体插入的多媒体支持
在Typer应用中优雅地处理和重组任意命令行参数
极速漫画官方主页网址 极速漫画漫画在线浏览官网链接
解决macOS Tkinter应用双击启动崩溃:PyInstaller打包指南
在Pyomo中实现基于变量的条件约束:Big-M方法详解
J*a实现学校排课程序_面向对象结构化项目示例
手机CPU怎么影响游戏体验_手机CPU对游戏性能的影响分析
C++如何打印当前代码行号与文件名_C++预定义宏FILE与LINE的使用
Win11怎么开启省电模式_Win11电池节电模式自动开启
C++如何生成随机数_C++ random库使用方法与范围设置
qq游戏网页版直接玩_qq游戏免下载快速入口
Selenium Python中处理点击后新窗口加载冻结问题的策略与实践
qq浏览器如何查看和导出已保存的密码 qq浏览器密码管理器数据备份教程
为什么我的微信朋友圈看不到别人的更新_微信朋友圈更新显示异常解决方法
Typer应用中动态命令行参数的解析与处理
如何创建没有密码的Windows本地账户_跳过微软账户登录的技巧【教程】
免费抖音短视频入口_抖音网页版短视频免费通道
Python多版本共存与虚拟环境管理深度指南
Android Studio计算器C键逻辑错误排查与修复:条件判断优化指南
J*a编写用户注册与登录功能_掌握字符串与验证逻辑
蛙漫官方正版入口 蛙漫网页在线全集免费观看
企业名称高精度匹配:N-gram方法在结构相似性分析中的应用
网易大神账号申诉需要多久_网易大神账号申诉流程说明
Lar*el如何生成PDF或Excel文件_Lar*el文档导出工具与使用教程
excel如何生成目录 excel一键生成工作表目录超链接
Pandas DataFrame 高效批量赋值:告别循环与笛卡尔积误区
Composer中的^和~符号代表什么_精通Composer版本号语义化约束
蓝湖怎样用切图标注提对接效率_蓝湖用切图标注提对接效率【设计对接】
qq邮箱发邮件给国外发不出去_QQ邮箱国际邮件发送失败原因与解决
Yandex浏览器官方网页版入口 Yandex浏览器最新版官网
“在文档元素之后找到了标记”是什么错误? 检查并修复XML中多个根元素的3个方法
Django模型中自动计算可用余额的实现方法
React/Next.js中实现列表项的动态移动与状态管理:兼论唯一键的重要性
使用Python高效删除Word宏并转换DOCM为DOCX格式
Tailwind CSS line-clamp 布局问题解析与修复指南
品牌机怎么重装系统 联想/戴尔/惠普笔记本恢复出厂系统教程


2025-12-13
浏览次数:次
返回列表
ring>
#include <regex>
int main() {
std::string str = "hello world C++";
std::regex pattern(R"( +)");
std::string result = std::regex_replace(str, pattern, " ");
std::cout << "处理后: " << result << "\n"; // 输出: hello world C++
return 0;
}