C++ Primer 5th笔记(chap 17 标准库特殊设施)匹配标志
Posted thefist11
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ Primer 5th笔记(chap 17 标准库特殊设施)匹配标志相关的知识,希望对你有一定的参考价值。
1. 用来控制匹配和格式的标志
标准库还定义了用来在替换过程中控制匹配或格式的标志,这些标志可以传递给函数
regex_search 或 regex_match 或是类 smatch 的 format 成员
using std::regex_constants::format no copy
using namespace std::regex_constants;
定义在 regex_constants::match_flag_type中
操作 | 解释 |
---|---|
match_default | 等价于format_default |
match_not_bol | 不将首字符作为行首处理 |
match_not_eol | 不将尾字符作为行尾处理 |
match_not_bow | 不将首字符作为单词首处理 |
match_not_eow | 不将尾字符作为单词尾处理 |
match_any | 如果存在多于一个匹配,则可以返回任意一个匹配 |
match_not_null | 不匹配任何空序列 |
match_continuous | 匹配必须从输入的首字符开始 |
match_prev_avail | 输入序列包含第一个匹配之前的内容 |
format_default | 用ECMAScript规则替换字符串 |
format_sed | 用POSIX sed规则替换字符串 |
format_no_copy | 不输出输入序列中未匹配的部分 |
format_first_only | 只替换子表达式的第一次出现 |
1.1 使用格式标志
默认情况下, replace 输出整个输入序列。 未与正则表达式匹配的部分会原样输出;
匹配的部分按格式字符串指定的格式输出。 我们可以通过在 regex_replace 调用中指定 format no copy 来改变这种默认行为:
// 只生成电话号码: 使用新的格式字符串
string fmt2 = "$2.$5.$7 "; / / 在最后一部分号码后放置空格作为分隔符
// 通知regex replace只拷贝它替换的文本
cout << regex_replace (s, r, fmt2, format_no_copy) << endl;
//给定相同的输入, 此版本的程序生成
201.555 . 2368 862.555. 0123
973.555 . 0130
609.555 . 0132 201.555 . 0175 800.555 . 0000
以上是关于C++ Primer 5th笔记(chap 17 标准库特殊设施)匹配标志的主要内容,如果未能解决你的问题,请参考以下文章
C++ Primer 5th笔记(chap 17 标准库特殊设施)输出补白
C++ Primer 5th笔记(chap 17 标准库特殊设施)bitset类型
C++ Primer 5th笔记(chap 17 标准库特殊设施)正则表达式
C++ Primer 5th笔记(chap 17 标准库特殊设施)tuple 返回多个值