C++ 正则表达式库 std::basic_regex 中文手册(API说明来自cppreference.com)

简介: C++ 正则表达式库 std::basic_regex 中文手册(API说明来自cppreference.com)

C++ 正则表达式库 std::basic_regex

在头文件 中定义了模板类 basic_regex,它为容纳正则表达式提供了一个通用的框架。

template <
    class CharT,
    class Traits = std::regex_traits<CharT>
> class basic_regex;

(自 C++11 起)

对于常见的字符类型,提供了几个类型定义:

在头文件 中定义

类型 定义
std::regex std::basic_regex
std::wregex std::basic_regex<wchar_t>

成员类型

成员类型 定义
value_type CharT
traits_type Traits
string_type Traits::string_type
locale_type Traits::locale_type
flag_type std::regex_constants::syntax_option_type

成员函数

  • 构造函数:构造正则表达式对象
  • 析构函数:销毁正则表达式对象
  • operator=:赋值内容
  • assign:赋值内容

观察者

  • mark_count:返回正则表达式中标记的子表达式的数量
  • flags:返回语法标志

区域设置

  • getloc:获取区域信息
  • imbue:设置区域信息

修改器

  • swap:交换内容

常量

效果
icase 字符匹配应忽略大小写
nosubs 在执行匹配时,所有标记的子表达式(expr)都被视为非标记子表达式(?:expr)。在提供的 std::regex_match 结构中不存储匹配项,mark_count() 为零
optimize 指示正则表达式引擎加快匹配速度,可能会使构造变慢。例如,这可能意味着将非确定性有限状态自动机转换为确定性有限状态自动机
collate “[a-b]” 形式的字符范围将受区域设置影响
multiline (C++17) 如果选择了 ECMAScript 引擎,^ 应匹配一行的开头,$ 应匹配一行的末尾
ECMAScript 使用修改后的 ECMAScript 正则表达式语法
basic 使用基本的 POSIX 正则表达式语法
extended 使用扩展的 POSIX 正则表达式语法
awk 使用 POSIX 中的 awk 实用程序使用的正则表达式语法
grep 使用 POSIX 中的 grep 实用程序使用的正则表达式语法。这与 basic 选项基本相同,但新增了 newline ‘\n’ 作为 alternation 分隔符
egrep 使用带有 -E 选项的 POSIX 中的 grep 实用程序使用的正则表达式语法。这与 extended 选项基本相同,但新增了 newline ‘\n’ 和 ’

ECMAScript、basic、extended、awk、grep、egrep 中最多只能选择一个语法选项。如果没有选择语法,那么默认会选择 ECMAScript。其他选项作为修饰符,例如 std::regex("meow", std::regex::icase) 等价于 std::regex("meow", std::regex::ECMAScript|std::regex::icase)

在 basic_regex 中的成员常量是 namespace std::regex_constants 中定义的 syntax_option_type 常量的复制。

非成员函数

  • std::swap(std::basic_regex):专门化 std::swap 算法

以下是一个包含了各种用法的代码示例:

#include <regex>
#include <string>
#include <iostream>
int main() {
    // 创建一个 std::regex 对象
    std::regex reg("hello");
    
    // 使用 std::regex 对象进行匹配
    std::string s = "hello world";
    std::smatch m;
    if (std::regex_search(s, m, reg)) {
        std::cout << "Match found: " << m.str() << std::endl;
    }
    // 使用 assign() 修改 regex 对象的内容
    reg.assign("world");
    if (std::regex_search(s, m, reg)) {
        std::cout << "Match found: " << m.str() << std::endl;
    }
    // 使用 swap() 交换两个 regex 对象的内容
    std::regex reg2("goodbye");
    reg.swap(reg2);
    // 使用 imbue() 设置区域信息
    std::locale loc("C");
    reg.imbue(loc);
    // 使用 mark_count() 获取正则表达式中标记的子表达式数量
    std::cout << "Mark count: " << reg.mark_count() << std::endl;
    // 使用 flags() 获取语法标志
    std::cout << "Flags: " << reg.flags() << std::endl;
    return 0;
}

在这个示例中,我们创建了一个 std::regex 对象,然后使用它对字符串进行了匹配。我们还修改了 regex 对象的内容,交换了两个 regex 对象的内容,设置了区域信息,并获取了标记子表达式的数量和语法标志。

目录
相关文章
|
7月前
|
JSON 监控 API
掌握使用 requests 库发送各种 HTTP 请求和处理 API 响应
本课程全面讲解了使用 Python 的 requests 库进行 API 请求与响应处理,内容涵盖环境搭建、GET 与 POST 请求、参数传递、错误处理、请求头设置及实战项目开发。通过实例教学,学员可掌握基础到高级技巧,并完成天气查询应用等实际项目,适合初学者快速上手网络编程与 API 调用。
726 130
|
6月前
|
JSON API 数据格式
小红书API接口文档:笔记详情数据开发手册
小红书笔记详情API可获取指定笔记的标题、正文、互动数据及多媒体资源,支持字段筛选与评论加载。通过note_id和access_token发起GET/POST请求,配合签名验证,广泛用于内容分析与营销优化。
1173 3
|
8月前
|
域名解析 JSON API
【干货满满】如何处理requests库调用API接口时的异常情况
在调用 API 时,网络波动、服务器错误、参数异常等情况难以避免。本文提供一套系统化的异常处理方案,涵盖 requests 库常见异常类型、处理策略、实战代码与最佳实践,通过分类处理、重试机制与兜底策略,提升接口调用的稳定性与可靠性。
|
9月前
|
缓存 运维 安全
7天精通电商API:从接入到运维的完整实战手册
本文全面解析电商API接口技术,从基础概念到高阶应用,涵盖商品、订单、支付与营销等核心模块,并深入探讨性能优化、安全防护与智能化发展方向,助你掌握驱动数字商业的核心技术。
|
6月前
|
Ubuntu API C++
C++标准库、Windows API及Ubuntu API的综合应用
总之,C++标准库、Windows API和Ubuntu API的综合应用是一项挑战性较大的任务,需要开发者具备跨平台编程的深入知识和丰富经验。通过合理的架构设计和有效的工具选择,可以在不同的操作系统平台上高效地开发和部署应用程序。
259 11
|
12月前
|
自动驾驶 程序员 API
告别重复繁琐!Apipost参数描述库让API开发效率飙升!
在API开发中,重复录入参数占用了42%的时间,不仅效率低下还易出错。Apipost推出的参数描述库解决了这一痛点,通过智能记忆功能实现参数自动填充,如版本号、分页控制、用户信息等常用字段,大幅减少手动输入。支持Key-Value与Raw-Json格式导入,一键提取响应结果至文档,将创建20参数接口文档时间从18分钟缩短至2分钟。相比Postman需手动搜索变量,Apipost的参数复用响应速度仅0.3秒,且支持跨项目共享与实时纠错,真正实现“一次定义,终身受益”。
|
监控 API 计算机视觉
CompreFace:Star6.1k,Github上火爆的轻量化且强大的人脸识别库,api,sdk都支持
CompreFace 是一个在 GitHub 上拥有 6.1k Star 的轻量级人脸识别库,支持 API 和 SDK。它由 Exadel 公司开发,基于深度学习技术,提供高效、灵活的人脸识别解决方案。CompreFace 支持多种模型(如 VGG-Face、OpenFace 和 Facenet),具备多硬件支持、丰富的功能服务(如人脸检测、年龄性别识别等)和便捷的部署方式。适用于安防监控、商业领域和医疗美容等多个场景。
1628 4
|
7月前
|
数据采集 缓存 监控
京东商品API技术对接手册(2025版)
本接口文档涵盖基础服务能力、核心接口规范、业务场景实现及开发者注意事项。包括请求性能、数据覆盖、同步机制、认证鉴权、流量控制等内容,适用于商品信息获取、价格监控、库存预警等场景,助力开发者高效对接系统。
|
数据库 Python
Python网络数据抓取(8):正则表达式
Python网络数据抓取(8):正则表达式