C++中使用正则需包含<regex>头文件,支持regex_match全匹配、regex_search搜索、regex_replace替换及分组提取,结合smatch和sregex_iterator可实现高效文本处理,注意复用regex对象以提升性能。

在C++中使用正则表达式需要借助标准库中的 <regex> 头文件。从 C++11 开始,std::regex 提供了对正则表达式的完整支持,包括匹配、搜索、替换和分割字符串等功能。下面是一个实用的入门教程,帮助你快速掌握 C++ 正则表达式的常见用法。
使用正则功能前,先引入头文件:
#include <regex>通常也会使用 std 命名空间简化代码:
using namespace std;regex_match 用于判断整个字符串是否完全匹配某个正则模式。
立即学习“C++免费学习笔记(深入)”;
示例:验证一个字符串是否为纯数字
string text = "12345";注意:如果字符串是 "abc123" 或 "123abc",则不会匹配,因为 regex_match 要求整个字符串符合模式。
regex_search 用于在字符串中查找是否存在符合正则的部分。
示例:从一段文本中找出第一个邮箱地址
string text = "联系我 at example@email.com 或 admin@test.org";match 是一个 smatch 对象,match.str() 返回匹配的子串。
正则中的括号 () 可以定义“捕获组”,用于提取特定部分。
示例:提取日期中的年月日
string date_str = "2025-04-05";pieces[0] 是完整匹配,pieces[1], [2], [3] 分别对应三个括号内的内容。
使用 regex_replace 可以替换符合模式的文本。
示例:将所有连续空格替换为单个空格
string input = "a b c";也可以用于格式化,比如把 American 日期转成另一种格式:
string us_date = "04/05/2025";其中 $1, $2, $3 表示第1、2、3个捕获组。
要找出字符串中所有符合模式的内容,可以结合 regex_search 和迭代器。
示例:找出文本中所有邮箱
string content = "emails: a@x.com, b@y.org, c@z.net";sregex_iterator 是专门用于遍历 regex_search 结果的迭代器。
regex 对象构造有一定开销,建议重复使用同一个 regex 实例,而不是在循环中频繁创建。
regex number_check(R"(\d+)"); // 放在外面避免在循环内定义 regex,否则可能影响性能。
基本上就这些。掌握 regex_match、regex_search、regex_replace 和分组提取,就能应对大多数文本处理任务。C++ 的正则语法接近 Perl 风格,熟悉 JavaScript 或 Python 正则的人会很快上手。不复杂但容易忽略细节,比如全匹配与部分匹配的区别,多加练习即可熟练运用。
以上就是c++++如何使用正则表达式_c++正则regex库使用教程的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号