C++中使用正则需包含头文件,支持regex_match(完全匹配)、regex_search(部分搜索)、regex_replace(替换)和捕获组提取,结合smatch处理结果,适用于文本验证、查找与替换。

在C++中使用正则表达式需要借助头文件提供的功能。从C++11开始,标准库支持正则表达式操作,包括匹配、搜索、替换等。
包含头文件和命名空间
要使用正则表达式,先引入头文件:
#include
#include iostream>
#include
通常还会使用std::命名空间简化代码:
using namespace std;
基本匹配:regex_match
regex_match用于判断整个字符串是否完全匹配某个正则模式。
立即学习“C++免费学习笔记(深入)”;
示例:验证一个简单的手机号(以1开头的11位数字)
string phone = “13812345678”;
regex pattern(R”(^1[0-9]{10}$)”);
if (regex_match(phone, pattern)) {
cout } else {
cout }
R”( … )”是原始字符串字面量,避免转义字符问题。
部分匹配:regex_search
regex_search用于在字符串中查找是否存在符合正则的部分。
示例:从一段文本中找出邮箱地址
string text = “联系我:admin@example.com 或 support@test.org”;
regex email_pattern(R”(b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,}b)”);
smatch match; // 用于保存匹配结果
while (regex_search(text, match, email_pattern)) {
cout text = match.suffix(); // 更新剩余文本继续搜索
}
smatch是std::match_results的别名,可提取匹配内容。
提取子表达式
用括号()定义捕获组,可在结果中提取特定部分。
示例:提取日期中的年月日
string date_str = “今天是2024-04-05”;
regex date_regex(R”((d{4})-(d{2})-(d{2}))”);
smatch result;
if (regex_search(date_str, result, date_regex)) {
cout cout cout }
字符串替换:regex_replace
用regex_replace将匹配内容替换成指定字符串。
示例:隐藏手机号中间四位
string input = “我的电话是13812345678”;
regex phone_regex(R”(1[0-9]{3})([0-9]{4})([0-9]{4})”);
string masked = regex_replace(input, phone_regex, “$1****$3”);
cout
$1、$2表示对应捕获组的内容。
基本上就这些。掌握regex_match、regex_search、regex_replace和smatch就能处理大多数文本匹配需求。注意正则表达式语法要写对,建议测试时先用简单例子验证逻辑。不复杂但容易忽略细节。
以上就是c++++怎么使用正则表达式匹配字符串_c++ regex正则匹配用法的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1479228.html
微信扫一扫
支付宝扫一扫