c++怎么使用正则表达式_c++ regex正则表达式匹配与替换

C++中使用正则需包含头文件,支持regex_match(全匹配)、regex_search(搜索)和regex_replace(替换)。示例:用regex_match验证邮箱格式,regex_search提取文本中的数字,regex_replace替换空格或隐藏手机号中间四位。常用语法包括d、w、s及捕获组$1等。

c++怎么使用正则表达式_c++ regex正则表达式匹配与替换

C++ 使用正则表达式主要依赖于标准库中的 头文件。从 C++11 开始,std::regex 提供了对正则表达式的完整支持,包括匹配、搜索、替换和迭代等功能。下面介绍如何进行正则表达式的基本匹配与替换操作。

包含头文件并引入命名空间

在使用正则功能前,需要包含头文件:

#include
同时建议使用 std 命名空间或显式加上 std:: 前缀:

using namespace std;

正则表达式匹配(regex_match)

regex_match 用于判断整个字符串是否完全匹配某个正则模式。

示例:验证一个字符串是否为合法的邮箱格式(简化版)

regex pattern(R”(^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$)”);
string email = “test@example.com”;
if (regex_match(email, pattern)) {
  cout } else {
  cout }

注意:regex_match 要求整个字符串都符合模式,如果只是部分匹配,应使用 regex_search。

正则表达式搜索(regex_search)

regex_search 用于在字符串中查找符合正则表达式的子串。

示例:从文本中提取所有数字

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

string text = “订单编号:12345,价格:678元”;
regex digits(“d+”);
smatch match; // 用于保存匹配结果

while (regex_search(text, match, digits)) {
  cout   text = match.suffix(); // 更新剩余字符串继续查找
}

正则表达式替换(regex_replace)

regex_replace 可以将匹配的部分替换成指定内容,返回新字符串。

示例:将多个空格替换为单个空格

string input = “a   b    c”;
regex space_re(“s+”);
string result = regex_replace(input, space_re, ” “);
cout

另一个例子:隐藏手机号中间四位

string phone = “13812345678”;
regex phone_mask(“(d{3})d{4}(d{4})”);
string hidden = regex_replace(phone, phone_mask, “$1****$2”);
cout 注意:$1 和 $2 表示捕获组的内容,括号在正则中定义捕获组。

常见正则语法简要说明

d:匹配数字,等价 [0-9] w:匹配字母、数字、下划线 s:匹配空白字符(空格、制表符等) *:前一项出现 0 次或多次 +:前一项出现 1 次或多次 ?:前一项出现 0 次或 1 次 {n,m}:前一项出现 n 到 m 次 ^:匹配开头;$:匹配结尾 . 或 s 等需转义时用双反斜杠

基本上就这些。C++ 的 regex 功能足够应对大多数文本处理需求,虽然性能不如某些专用库,但标准库支持使其易于移植和使用。

以上就是c++++怎么使用正则表达式_c++ regex正则表达式匹配与替换的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1481065.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 05:09:47
下一篇 2025年12月10日 12:34:08

相关推荐

发表回复

登录后才能评论
关注微信