首页 > 后端开发 > C++ > 正文

c++正则表达式regex怎么匹配字符串_c++ regex匹配方法

尼克
发布: 2025-09-29 19:56:02
原创
968人浏览过
c++kquote>C++中使用正则需包含<regex>,常用std::regex、std::smatch等类;regex_match用于全字符串匹配,regex_search查找子串匹配并支持捕获组提取;通过括号定义捕获组可获取匹配的子部分;建议使用原始字符串R"(...)"避免转义问题;频繁使用时应缓存regex对象以提升性能。

c++正则表达式regex怎么匹配字符串_c++ regex匹配方法

在C++中使用正则表达式需要包含头文件 <regex>,通过 std::regex 相关类来实现字符串匹配。C++11 起引入了原生支持的正则功能,常用类包括:std::regexstd::smatchstd::regex_matchstd::regex_search

1. 基本匹配:regex_match

std::regex_match 用于判断整个字符串是否完全匹配指定正则表达式。

示例:

腾讯云AI代码助手
腾讯云AI代码助手

基于混元代码大模型的AI辅助编码工具

腾讯云AI代码助手 172
查看详情 腾讯云AI代码助手
#include <iostream>
#include <regex>
#include <string>

int main() {
    std::string str = "hello123";
    std::regex pattern(R"([a-zA-Z]+\d+)"); // 匹配字母后跟数字

    if (std::regex_match(str, pattern)) {
        std::cout << "完全匹配!" << std::endl;
    } else {
        std::cout << "不匹配。" << std::endl;
    }
    return 0;
}
登录后复制

只有当整个字符串符合模式时才返回 true。

立即学习C++免费学习笔记(深入)”;

2. 部分匹配:regex_search

std::regex_search 用于查找字符串中是否存在与正则匹配的子串。

示例:

#include <iostream>
#include <regex>
#include <string>

int main() {
    std::string str = "abc hello123 world";
    std::regex pattern(R"([a-zA-Z]+\d+)");
    std::smatch match;

    if (std::regex_search(str, match, pattern)) {
        std::cout << "找到匹配内容:" << match.str() << std::endl;
    }
    return 0;
}
登录后复制

match 是一个 std::smatch 对象,可以提取出匹配的子字符串。

3. 提取匹配内容(捕获组)

使用括号 () 定义捕获组,可以从匹配结果中提取特定部分。

示例:提取用户名和域名

#include <iostream>
#include <regex>
#include <string>

int main() {
    std::string email = "contact@example.com";
    std::regex pattern(R"(([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+\.[a-zA-Z]{2,}))");
    std::smatch match;

    if (std::regex_search(email, match, pattern)) {
        std::cout << "用户名: " << match[1].str() << std::endl;
        std::cout << "域名: " << match[2].str() << std::endl;
    }
    return 0;
}
登录后复制

match[0] 是完整匹配,match[1]、match[2] 分别对应第一个和第二个捕获组。

4. 常见匹配方法总结

  • std::regex_match(str, pattern):全字符串匹配,必须全部吻合。
  • std::regex_search(str, pattern):搜索任意位置的匹配子串。
  • std::regex_search(str, match, pattern):带捕获组的结果提取。
  • std::sregex_iterator:遍历所有匹配项(适合多次匹配)。

基本上就这些。注意正则表达式字符串建议使用原始字符串字面量 R"(...)",避免转义问题。c++ regex 功能强大但性能一般,频繁使用时可考虑缓存 regex 对象。不复杂但容易忽略细节,比如全匹配和部分匹配的区别。基本上就这些。

以上就是c++++正则表达式regex怎么匹配字符串_c++ regex匹配方法的详细内容,更多请关注php中文网其它相关文章!

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号