# std::regex_constants::match_flag_type

< cpp‎ | regex

定义于头文件 `<regex>` |  |
typedef /*unspecified*/ match_flag_type; |  | (C++11 起)
constexpr match_flag_type match_default = {}; constexpr match_flag_type match_not_bol = /*unspecified*/; constexpr match_flag_type match_not_eol = /*unspecified*/; constexpr match_flag_type match_not_bow = /*unspecified*/; constexpr match_flag_type match_not_eow = /*unspecified*/; constexpr match_flag_type match_any = /*unspecified*/; constexpr match_flag_type match_not_null = /*unspecified*/; constexpr match_flag_type match_continuous = /*unspecified*/; constexpr match_flag_type match_prev_avail = /*unspecified*/; constexpr match_flag_type format_default = {}; constexpr match_flag_type format_sed = /*unspecified*/; constexpr match_flag_type format_no_copy = /*unspecified*/; constexpr match_flag_type format_first_only = /*unspecified*/; |  | (C++11 起) (C++17 前)
inline constexpr match_flag_type match_default = {}; inline constexpr match_flag_type match_not_bol = /*unspecified*/; inline constexpr match_flag_type match_not_eol = /*unspecified*/; inline constexpr match_flag_type match_not_bow = /*unspecified*/; inline constexpr match_flag_type match_not_eow = /*unspecified*/; inline constexpr match_flag_type match_any = /*unspecified*/; inline constexpr match_flag_type match_not_null = /*unspecified*/; inline constexpr match_flag_type match_continuous = /*unspecified*/; inline constexpr match_flag_type match_prev_avail = /*unspecified*/; inline constexpr match_flag_type format_default = {}; inline constexpr match_flag_type format_sed = /*unspecified*/; inline constexpr match_flag_type format_no_copy = /*unspecified*/; inline constexpr match_flag_type format_first_only = /*unspecified*/; |  | (C++17 起)

`match_flag_type` 是指定附加正则表达式匹配选项的位掩码类型 (BitmaskType) 。

### 常量

注意： `[first, last)` 指代要匹配的字符序列。

常量 | 解释
`match_not_bol` | [first,last) 中的首个字符将被处理成如同它不在行首（即 ^ 将不匹配 [first,first) ）
`match_not_eol` | [first,last) 中的最末字符将被处理成如同它不在行尾（即 $ 将不匹配 [last,last) ）
`match_not_bow` | "\b" 将不匹配 [first,first)
`match_not_eow` | "\b" 将不匹配 [last,last)
`match_any` | 若多于一个匹配可行，则任何匹配都是可接受的结果
`match_not_null` | 不匹配空字符序列
`match_continuous` | 仅匹配始于 first 的子串
`match_prev_avail` | --first 是合法的迭代位置。设置时导致 match_not_bol 和 match_not_bow 被忽略
`format_default` | 使用 ECMAScript 规则于 std::regex_replace 构造字符串（语法文档）
`format_sed` | 于 std::regex_replace 使用 POSIX sed 工具规则。（语法文档）
`format_no_copy` | 不复制不匹配的字符串到 std::regex_replace 中的输出
`format_first_only` | 仅替换 std::regex_replace 中的首个匹配

`match_default` 及 `format_default` 以外的所有常量都是位掩码元素。 `match_default` 与 `format_default` 常量是空位掩码。

### 缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

DR | 应用于 | 出版时的行为 | 正确行为
--- | --- | --- | ---
LWG 2053 | C++11 | `match_flag_type` 不能为有作用域枚举，因为要求 `match_default` 与 `format_default` 从 ​0​ 初始化 | 使之从空花括号初始化

### 参阅

regex_match (C++11) | 尝试匹配一个正则表达式到整个字符序列 (函数模板)
syntax_option_type (C++11) | 控制正则表达式行为的通用选项 (typedef)
error_type (C++11) | 描述不同类型的匹配错误 (typedef)