C++中使用正则需包含头文件,主要类有std::regex、std::smatch等;通过regex_match全匹配、regex_search查找子串、regex_replace替换文本,并支持捕获组提取和格式化替换,建议用R”()”原始字符串避免转义。

在C++中使用正则表达式需要借助标准库中的 头文件。从 C++11 开始,std::regex 提供了对正则表达式的完整支持,可以用于字符串匹配、查找、替换等操作。
包含头文件并了解核心类
要使用正则功能,先包含头文件:
// 示例代码
#include
#include iostream>
#include
C++ 正则相关的主要类有:
– std::regex:编译后的正则表达式对象
– std::smatch:用于存储字符串匹配结果(针对 std::string)
– std::regex_match:判断整个字符串是否完全匹配
– std::regex_search:在字符串中搜索符合正则的子串
– std::regex_replace:替换匹配到的内容
基本匹配:regex_match 和 regex_search
std::regex_match 要求整个字符串完全符合正则模式。
// 判断是否为纯数字
std::string str = “12345”;
std::regex pattern(R”(d+)”);
if (std::regex_match(str, pattern)) {
std::cout }
std::regex_search 用于查找字符串中是否存在匹配的子串。
立即学习“C++免费学习笔记(深入)”;
// 查找是否包含邮箱格式片段
std::string text = “联系我:hello@example.com”;
std::regex email_pattern(R”(w+@w+.w+)”);
if (std::regex_search(text, email_pattern)) {
std::cout }
提取匹配内容(捕获组)
使用括号 () 定义捕获组,并通过 std::smatch 获取结果。
// 提取日期中的年月日
std::string date_str = “2024-04-05”;
std::regex date_regex(R”((d{4})-(d{2})-(d{2}))”);
std::smatch match_result;
if (std::regex_search(date_str, match_result, date_regex)) {
std::cout std::cout std::cout }
match_result[0] 是完整匹配,match_result[1], [2], … 对应各个括号内的捕获内容。
字符串替换:regex_replace
可以用正则快速替换指定模式。
// 将多个空格替换成一个
std::string input = “a b c”;
std::regex space_pattern(R”(s+)”);
std::string result = std::regex_replace(input, space_pattern, ” “);
std::cout
也可以结合格式化进行复杂替换,例如反转姓名顺序:
// 将 “LastName, FirstName” 改为 “FirstName LastName”
std::string name = “Doe, John”;
std::regex name_pattern(R”((w+),s+(w+))”);
std::string new_name = std::regex_replace(name, name_pattern, “$2 $1”);
std::cout
基本上就这些常用操作。注意正则表达式写在字符串中时,建议使用原始字符串字面量 R”(…)” 避免反斜杠转义问题。C++ 的正则功能虽不如 Python 灵活,但在解析日志、验证输入、文本处理时已经足够实用。
以上就是c++++怎么使用正则表达式匹配字符串_正则表达式使用方法的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1476946.html
微信扫一扫
支付宝扫一扫