std::match_results

来自cppreference.com
< cpp‎ | regex
在标头 <regex> 定义
template<

    class BidirIt,
    class Alloc =std::allocator<std::sub_match<BidirIt>>

>class match_results;
(1) (C++11 起)
namespace pmr {

    template<class BidirIt>
    using match_results = std::match_results<BidirIt,
                              std::pmr::polymorphic_allocator<
                                  std::sub_match<BidirIt>>>;

}
(2) (C++17 起)

类模板 std::match_results 保有表示正则表达式匹配结果的字符序列的汇集。

这是特殊的知分配器容器。它只能默认创建、从 std::regex_iterator 获得,或通过 std::regex_searchstd::regex_match 修改。因为 std::match_results 保有一组 std::sub_match,它们每个都是一对指向匹配的原初字符序列中的迭代器,所以如果原初字符序列被销毁,或指向它的迭代器因为其他原因失效,那么检验 std::match_results 的行为未定义。

std::match_results 中所含的首个 std::sub_match(索引 0)始终表示正则表达式所做的目标序列内的完整匹配,而后继的 std::sub_match 表示按顺序对应分隔正则表达式中子表达式的左括号的子表达式匹配。

std::match_results 满足知分配器容器(AllocatorAwareContainer) 序列容器(SequenceContainer) 的要求,但仅支持复制赋值、移动赋值和为常容器定义的操作,并且比较函数的语义与对容器要求的语义不同。

目录

[编辑]类型要求

-
BidirIt 必须满足老式双向迭代器(LegacyBidirectionalIterator)
-
Alloc 必须满足分配器(Allocator)

[编辑]特化

提供几个对常用字符序列类型的特化:

在标头 <regex> 定义
类型 定义
std::cmatchstd::match_results<constchar*>
std::wcmatchstd::match_results<constwchar_t*>
std::smatchstd::match_results<std::string::const_iterator>
std::wsmatchstd::match_results<std::wstring::const_iterator>
std::pmr::cmatch(C++17)std::pmr::match_results<constchar*>
std::pmr::wcmatch(C++17)std::pmr::match_results<constwchar_t*>
std::pmr::smatch(C++17)std::pmr::match_results<std::string::const_iterator>
std::pmr::wsmatch(C++17)std::pmr::match_results<std::wstring::const_iterator>

[编辑]成员类型

成员类型 定义
allocator_typeAllocator
value_typestd::sub_match<BidirIt>
const_referenceconst value_type&
referencevalue_type&
const_iterator由实现定义(取决于底层容器)
iteratorconst_iterator
difference_typestd::iterator_traits<BidirIt>::difference_type
size_typestd::allocator_traits<Alloc>::size_type
char_typestd::iterator_traits<BidirIt>::value_type
string_typestd::basic_string<char_type>

[编辑]成员函数

构造对象
(公开成员函数)[编辑]
析构对象
(公开成员函数)[编辑]
赋值内容
(公开成员函数)[编辑]
返回关联的分配器
(公开成员函数)[编辑]
状态
检查结果是否可用
(公开成员函数)
大小
检查匹配是否成功
(公开成员函数)[编辑]
返回完全建立的结果状态中的匹配数
(公开成员函数)[编辑]
返回子匹配的最大可能数量
(公开成员函数)[编辑]
元素访问
返回特定子匹配的长度
(公开成员函数)[编辑]
返回特定子匹配首字符的位置
(公开成员函数)[编辑]
返回特定子匹配的字符序列
(公开成员函数)[编辑]
返回指定的子匹配
(公开成员函数)[编辑]
返回目标序列起始和完整匹配起始之间的子序列
(公开成员函数)[编辑]
返回完整匹配结尾和目标序列结尾之间的子序列
(公开成员函数)[编辑]
迭代器
返回指向子匹配列表起始的迭代器
(公开成员函数)[编辑]
返回指向子匹配列表末尾的迭代器
(公开成员函数)[编辑]
格式
为输出格式化匹配结果
(公开成员函数)[编辑]
修改器
交换内容
(公开成员函数)[编辑]

[编辑]非成员函数

(C++20 移除)
以字典序比较两个匹配结果的值
(函数模板)[编辑]
特化 std::swap 算法
(函数模板)[编辑]
close