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_type在
regex(和
basic_regex)中,它用于构造或赋值
regex 对象,以指定对象使用的语法。它可以接受的可能值是
flag | 对语法的影响 | 说明 |
icase | 不区分大小写 | 正则表达式匹配时不考虑大小写。 |
nosubs | 无子表达式 | 要放回的字符的match_results结构将不包含子表达式匹配。 |
optimize | 优化匹配 | 优先考虑匹配效率而不是构造正则表达式对象的效率。 |
collate | 区域设置敏感性 | 字符范围,例如"[a-b]",受区域设置影响。 |
ECMAScript | ECMAScript 语法 | 正则表达式遵循其中一种语法。 位掩码必须设置这六种语法标志中的一种(且仅一种)才能具有有效值。 |
basic | 基本 POSIX 语法 |
extended | 扩展 POSIX 语法 |
awk | Awk POSIX 语法 |
grep | Grep POSIX 语法 |
egrep | Egrep POSIX 语法 |
flag | 对语法的影响 | 说明 |
icase | 不区分大小写 | 正则表达式匹配时不考虑大小写。 |
nosubs | 无子表达式 | 子表达式不被视为已标记。 要放回的字符的match_results结构将不包含子表达式匹配。 |
optimize | 优化匹配 | 优先考虑匹配效率而不是构造正则表达式对象的效率。 |
collate | 区域设置敏感性 | 字符范围,例如"[a-b]",受区域设置影响。 |
ECMAScript | ECMAScript 语法 | 正则表达式遵循其中一种语法。 位掩码最多可以设置这六种语法标志中的一种才能具有有效值。如果未设置任何标志,则假定为 ECMAScript。 |
basic | 基本 POSIX 语法 |
extended | 扩展 POSIX 语法 |
awk | Awk POSIX 语法 |
grep | Grep POSIX 语法 |
egrep | Egrep POSIX 语法 |
位掩码类型match_flag_type
用作
regex_match、
regex_search 和
regex_replace 函数的参数,也用作
regex_iterator 和
regex_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_bol和match_not_bow被忽略) |
format_default | 默认格式 | 使用标准格式规则替换匹配项(ECMAScript 的 replace 方法使用的那些)。**。 |
format_sed | sed 格式 | 使用与 POSIX 中 sed 实用程序相同的规则来替换匹配项。 |
format_no_copy | 不复制 | 替换匹配项时,不会复制目标序列中与正则表达式不匹配的部分。 |
format_first_only | 仅首次 | 仅替换正则表达式的第一次出现。 |
** 这些常量具有
空位掩码值,并在与其他标志值组合时被忽略。
位掩码类型error_type
由
regex_error 使用,用于识别抛出异常的错误类型
flag | error |
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 | 确定正则表达式是否可以匹配指定字符序列时内存不足。 |