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 返回多个值

C++ Primer 5th笔记(chap 17 标准库特殊设施)控制输入格式

C++ Primer 5th笔记(chap 17 标准库特殊设施)bitset操作