namespace
<regex>

std::regex_constants

regex constants
此命名空间声明了三个位掩码类型,用于正则表达式库的元素,以及这些类型的常量值

这些位掩码类型中的每一种可能已在您的库中实现为枚举类型、整型或 bitset。无论哪种情况,它都可以通过按位或运算符(|):
1
bitmask_type object = flag1 | flag2 | flag3;

通过在特定命名空间下提供这些值,您可以选择将此命名空间(通过using namespace std::regex_constants)直接包含到您的代码中,以便更轻松地引用这些值,而无需考虑您是否包含更通用的命名空间std还是不包含。

位掩码类型syntax_option_type

别名为成员类型flag_typeregex(和 basic_regex)中,它用于构造或赋值 regex 对象,以指定对象使用的语法。它可以接受的可能值是

flag对语法的影响说明
icase不区分大小写正则表达式匹配时不考虑大小写。
nosubs无子表达式要放回的字符的match_results结构将不包含子表达式匹配。
optimize优化匹配优先考虑匹配效率而不是构造正则表达式对象的效率。
collate区域设置敏感性字符范围,例如"[a-b]",受区域设置影响。
ECMAScriptECMAScript 语法正则表达式遵循其中一种语法。
位掩码必须设置这六种语法标志中的一种(且仅一种)才能具有有效值。
basic基本 POSIX 语法
extended扩展 POSIX 语法
awkAwk POSIX 语法
grepGrep POSIX 语法
egrepEgrep POSIX 语法
flag对语法的影响说明
icase不区分大小写正则表达式匹配时不考虑大小写。
nosubs无子表达式子表达式不被视为已标记。
要放回的字符的match_results结构将不包含子表达式匹配。
optimize优化匹配优先考虑匹配效率而不是构造正则表达式对象的效率。
collate区域设置敏感性字符范围,例如"[a-b]",受区域设置影响。
ECMAScriptECMAScript 语法正则表达式遵循其中一种语法。
位掩码最多可以设置这六种语法标志中的一种才能具有有效值。如果未设置任何标志,则假定为 ECMAScript
basic基本 POSIX 语法
extended扩展 POSIX 语法
awkAwk POSIX 语法
grepGrep POSIX 语法
egrepEgrep POSIX 语法

位掩码类型match_flag_type

用作 regex_matchregex_searchregex_replace 函数的参数,也用作 regex_iteratorregex_token_iterator 构造函数的参数。

flag效果说明
match_default默认默认匹配行为。**。
match_not_bol非行首第一个字符不被视为行首"^"不匹配)。
match_not_eol非行尾最后一个字符不被视为行尾"$"不匹配)。
match_not_bow非词首转义序列"\b"不匹配为词首
match_not_eow非词尾转义序列"\b"不匹配为词尾
match_any任意匹配如果可能存在多个匹配,则任何匹配都可以接受。
match_not_null非空空序列不匹配。
match_continuous连续表达式必须匹配一个以第一个字符开头的子序列。
子序列必须以第一个字符开头才能匹配。
match_prev_avail先前可用第一个字符之前存在一个或多个字符。(match_not_bolmatch_not_bow被忽略)
format_default默认格式使用标准格式规则替换匹配项(ECMAScript 的 replace 方法使用的那些)。**。
format_sedsed 格式使用与 POSIX 中 sed 实用程序相同的规则来替换匹配项。
format_no_copy不复制替换匹配项时,不会复制目标序列中与正则表达式不匹配的部分。
format_first_only仅首次仅替换正则表达式的第一次出现。
** 这些常量具有空位掩码值,并在与其他标志值组合时被忽略。

位掩码类型error_type

regex_error 使用,用于识别抛出异常的错误类型

flagerror
error_collate表达式包含无效的排序元素名称。
error_ctype表达式包含无效的字符类名称。
error_escape表达式包含无效的转义字符或尾随转义。
error_backref表达式包含无效的反向引用。
error_brack表达式包含不匹配的方括号([]).
error_paren表达式包含不匹配的圆括号(()).
error_brace表达式包含不匹配的大括号({}).
error_badbrace表达式包含大括号之间无效的范围({}).
error_range表达式包含无效的字符范围。
error_space将表达式转换为有限状态机时内存不足。
error_badrepeat表达式包含一个重复说明符(例如*?+{)未被有效的正则表达式 precede。
error_complexity与正则表达式的匹配尝试的复杂度超过了预设级别。
error_stack确定正则表达式是否可以匹配指定字符序列时内存不足。