std:: sub_match
|
定义于头文件
<regex>
|
||
|
template
<
class
BidirIt
>
class sub_match ; |
(C++11 起) | |
类模板
std::sub_match
被正则表达式引擎用于表示由标记子表达式匹配的字符序列。
一个匹配是正则表达式在目标范围内匹配的
[
begin
,
end
)
区间对,但额外提供了观察器函数以增强代码清晰度。
只有默认构造函数是公开可访问的。
std::sub_match
的实例通常在正则表达式算法处理过程中,作为
std::match_results
容器的一部分被构造和填充。
除非
matched
成员为
true
,否则成员函数将返回已定义的默认值。
std::sub_match
继承自
std::
pair
<
BidirIt, BidirIt
>
,但不能将其视为
std::pair
对象,因为赋值等成员函数无法按预期工作。
目录 |
类型要求
-
BidirIt
必须满足
LegacyBidirectionalIterator
的要求。
|
特化
针对常见字符序列类型提供了若干特化版本:
|
定义于头文件
<regex>
|
|
| 类型 | 定义 |
std::csub_match
|
std :: sub_match < const char * > |
std::wcsub_match
|
std :: sub_match < const wchar_t * > |
std::ssub_match
|
std :: sub_match < std :: string :: const_iterator > |
std::wssub_match
|
std :: sub_match < std :: wstring :: const_iterator > |
嵌套类型
| 类型 | 定义 |
iterator
|
BidirIt
|
value_type
|
std:: iterator_traits < BidirIt > :: value_type |
difference_type
|
std:: iterator_traits < BidirIt > :: difference_type |
string_type
|
std:: basic_string < value_type > |
数据成员
| 成员 | 描述 |
|
bool
matched
|
本次匹配是否成功
(公开成员对象) |
继承自 std:: pair
|
BidirIt
first
|
匹配序列的起始位置
(公开成员对象) |
|
BidirIt
second
|
匹配序列的结束后位置
(公开成员对象) |
成员函数
|
构造匹配对象
(公开成员函数) |
|
观察器 |
|
|
返回匹配长度(若存在)
(公开成员函数) |
|
|
转换为底层字符串类型
(公开成员函数) |
|
|
比较匹配的子序列(若存在)
(公开成员函数) |
|
修改器 |
|
|
交换内容
(公开成员函数) |
|
非成员函数
|
(C++20 中移除)
(C++20 中移除)
(C++20 中移除)
(C++20 中移除)
(C++20 中移除)
(C++20)
|
比较
sub_match
与另一个
sub_match
、字符串或字符
(函数模板) |
|
输出匹配的字符子序列
(函数模板) |
示例
#include <cassert> #include <iostream> #include <regex> #include <string> int main() { std::string sentence{"Friday the thirteenth."}; const std::regex re{"([A-z]+) ([a-z]+) ([a-z]+)"}; std::smatch words; std::regex_search(sentence, words, re); std::cout << std::boolalpha; for (const auto& m : words) { assert(m.matched); std::cout << "m: [" << m << "], m.length(): " << m.length() << ", " "*m.first: '" << *m.first << "', " "*m.second: '" << *m.second << "'\n"; } }
输出:
m: [Friday the thirteenth], m.length(): 21, *m.first: 'F', *m.second: '.' m: [Friday], m.length(): 6, *m.first: 'F', *m.second: ' ' m: [the], m.length(): 3, *m.first: 't', *m.second: ' ' m: [thirteenth], m.length(): 10, *m.first: 't', *m.second: '.'
参见
|
(C++11)
|
遍历给定字符串中所有正则表达式匹配的指定子表达式,或遍历未匹配的子字符串
(类模板) |