全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C++如何使用正则表达式_C++11 std::regex库的匹配与搜索

C++11引入std::regex支持正则操作,通过头文件提供regex_match、regex_search、regex_replace等函数实现匹配、搜索与替换,配合smatch提取分组,建议复用regex对象以提升性能。

在C++11中,标准库引入了std::regex,使得正则表达式操作变得原生支持。通过头文件,你可以进行字符串的匹配、搜索、替换和分割等操作。下面介绍如何使用std::regex完成常见的正则任务。

包含头文件与基本类型

使用正则功能前,先包含头文件:

// #include

std::regex是用于表示正则表达式的类,主要配合以下函数和类使用:

  • std::regex_match:判断整个字符串是否匹配正则表达式
  • std::regex_search:在字符串中查找符合正则的部分
  • std::regex_replace:替换匹配到的内容
  • std::smatch / std::cmatch:保存匹配结果(分别用于string和C风格字符串)

完全匹配:std::regex_match

std::regex_match要求整个字符串完全符合正则模式,否则返回false。

std::string str = "123-456-7890";
std::regex pattern(R"(\d{3}-\d{3}-\d{4})"); // 匹配电话号码格式
if (std::regex_match(str, pattern)) {
    std::cout }

R"(...)" 是原始字符串字面量,避免转义反斜杠。上面的例子会成功匹配一个标准格式的电话号码。

部分搜索:std::regex_search

当你只想知道字符串中是否存在某个模式时,使用std::regex_search

std::string text = "我的电话是123-456-7890,记得联系我。";
std::regex phone_pattern(R"(\d{3}-\d{3}-\d{4})");
std::smatch match;
if (std::regex_search(text, match, phone_pattern)) {
    std::cout }

这里match保存了匹配结果,match.str()返回实际匹配的子串。注意regex_search只找第一个匹配项。

提取分组信息

正则表达式支持用括号分组,可以提取特定部分。

std::string input = "姓名:张三,年龄:25";
std::regex named_pattern(R"(姓名:(\w+),年龄:(\d+))");
std::smatch result;
if (std::regex_match(input, result, named_pattern)) {
    std::cout     std::cout }

result[0]是完整匹配,result[1]开始是各分组内容。

字符串替换:std::regex_replace

可用于过滤或格式化文本。

std::string sentence = "今天的温度是100度,太高了!";
std::regex digit_pattern(R"(\d+)");
std::string new_sentence = std::regex_replace(sentence, digit_pattern, "XX");
std::cout

也可以结合格式字符串使用,比如保留部分内容。

性能提示与注意事项

std::regex对象构造成本较高,建议复用而不是频繁创建。如果在循环中使用正则,应提前构造好regex对象。

const std::regex email_regex(R"(\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b)"); // 预定义

另外,不同编译器对正则的支持程度略有差异,特别是复杂语法。建议测试边界情况。

基本上就这些常用操作。C++11的std::regex虽然功能不如Python或JavaScript强大,但在日常文本处理中已足够实用。


# javascript  # python  # java  # git  # 正则表达式  # ai  # c++  # 标准库 


相关文章: 如何在建站之星网店版论坛获取技术支持?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  建站之星如何实现网站加密操作?  公司网站制作价格怎么算,公司办个官网需要多少钱?  建站之星各版本价格是多少?  建站之星2.7模板:企业网站建设与h5定制设计专题  网站制作软件有哪些,制图软件有哪些?  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?  建站主机核心功能解析:服务器选择与网站搭建流程指南  如何通过IIS搭建网站并配置访问权限?  如何用y主机助手快速搭建网站?  建站主机CVM配置优化、SEO策略与性能提升指南  如何通过西部建站助手安装IIS服务器?  如何用5美元大硬盘VPS安全高效搭建个人网站?  如何通过云梦建站系统实现SEO快速优化?  如何在IIS管理器中快速创建并配置网站?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  建站之星安装后界面空白如何解决?  宝塔建站助手安装配置与建站模板使用全流程解析  上海网站制作开发公司,上海买房比较好的网站有哪些?  如何快速搭建响应式可视化网站?  设计网站制作公司有哪些,制作网页教程?  安云自助建站系统如何快速提升SEO排名?  建站之星代理费用多少?最新价格详情介绍  Android滚轮选择时间控件使用详解  ,在苏州找工作,上哪个网站比较好?  如何在腾讯云服务器上快速搭建个人网站?  如何选择服务器才能高效搭建专属网站?  如何在云主机快速搭建网站站点?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  Android使用GridView实现日历的简单功能  如何通过虚拟主机快速完成网站搭建?  建站之星后台密码如何安全设置与找回?  广州商城建站系统开发成本与周期如何控制?  如何用免费手机建站系统零基础打造专业网站?  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  如何快速搭建高效可靠的建站解决方案?  个人网站制作流程图片大全,个人网站如何注销?  如何通过WDCP绑定主域名及创建子域名站点?  网站网页制作专业公司,怎样制作自己的网页?  建站之星如何优化SEO以实现高效排名?  建站之星如何快速解决建站难题?  如何通过VPS搭建网站快速盈利?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  建设网站制作价格,怎样建立自己的公司网站?  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  建站org新手必看:2024最新搭建流程与模板选择技巧  建站之星安装路径如何正确选择及配置? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。