新闻中心

c++ 正则表达式怎么用 c++ regex库匹配实例

2025-12-13
浏览次数:
返回列表
C++中使用正则需包含头文件,自C++11起支持std::regex库,可用于模式匹配、搜索和替换;例如用std::regex_match验证邮箱格式合法性。

c++ 正则表达式怎么用 c++ regex库匹配实例

在C++中使用正则表达式需要包含 头文件。C++11起引入了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

Figma 是一款基于云端的 UI 设计工具,可以在线进行产品原型、设计、评审、交付等工作。

Figma 1371 查看详情 Figma
#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_matchregex_searchregex_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 布局问题解析与修复指南  品牌机怎么重装系统 联想/戴尔/惠普笔记本恢复出厂系统教程 

搜索