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

C++ 使用正则表达式主要依赖于标准库中的
包含头文件并引入命名空间
在使用正则功能前,需要包含头文件:#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_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 功能足够应对大多数文本处理需求,虽然性能不如某些专用库,但标准库支持使其易于移植和使用。











