28 Text processing library [text]
28.6 Regular expressions library [re]
28.6.4 Namespace std::regex_constants [re.const]
28.6.4.1 General [re.const.general]
28.6.4.2 Bitmask type syntax_option_type [re.synopt]
28.6.4.3 Bitmask type match_flag_type [re.matchflag]
28.6.4.4 Implementation-defined error_type [re.err]
28.6.4.1 General [re.const.general]
The namespace std::regex_constants holds symbolic constants used by the regular expression library.
This namespace provides three types, syntax_option_type, match_flag_type, and error_type, along with several constants of these types.
28.6.4.2 Bitmask type syntax_option_type [re.synopt]
namespace std::regex_constants { using syntax_option_type = T1; inline constexpr syntax_option_type icase = unspecified; inline constexpr syntax_option_type nosubs = unspecified; inline constexpr syntax_option_type optimize = unspecified; inline constexpr syntax_option_type collate = unspecified; inline constexpr syntax_option_type ECMAScript = unspecified; inline constexpr syntax_option_type basic = unspecified; inline constexpr syntax_option_type extended = unspecified; inline constexpr syntax_option_type awk = unspecified; inline constexpr syntax_option_type grep = unspecified; inline constexpr syntax_option_type egrep = unspecified; inline constexpr syntax_option_type multiline = unspecified; }
The type syntax_option_type is an implementation-defined bitmask type ([bitmask.types]).
Setting its elements has the effects listed in Table 118.
A valid value of type syntax_option_type shall have at most one of the grammar elements ECMAScript, basic, extended, awk, grep, egrep, set.
If no grammar element is set, the default grammar is ECMAScript.
Table 118 — syntax_option_type effects [tab:re.synopt]
Element | Effect(s) if set |
icase | Specifies that matching of regular expressions against a character container sequence shall be performed without regard to case. |
nosubs | Specifies that no sub-expressions shall be considered to be marked, so that when a regular expression is matched against a character container sequence, no sub-expression matches shall be stored in the supplied match_results object. |
optimize | |
collate | Specifies that character ranges of the form "[a-b]" shall be locale sensitive. |
ECMAScript | Specifies that the grammar recognized by the regular expression engine shall be that used by ECMAScript in ECMA-262, as modified in [re.grammar]. |
basic | Specifies that the grammar recognized by the regular expression engine
shall be that used by basic regular expressions in POSIX. |
extended | Specifies that the grammar recognized by the regular expression engine
shall be that used by extended regular expressions in POSIX. |
awk | Specifies that the grammar recognized by the regular expression engine shall be that used by the utility awk in POSIX. |
grep | Specifies that the grammar recognized by the regular expression engine shall be that used by the utility grep in POSIX. |
egrep | Specifies that the grammar recognized by the regular expression engine shall be that used by the utility grep when given the -E option in POSIX. |
multiline | Specifies that ^ shall match the beginning of a line and $ shall match the end of a line, if the ECMAScript engine is selected. |
28.6.4.3 Bitmask type match_flag_type [re.matchflag]
namespace std::regex_constants { using match_flag_type = T2; 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; }
The type match_flag_type is an implementation-defined bitmask type ([bitmask.types]).
The constants of that type, except for match_default and format_default, are bitmask elements.
The match_default and format_default constants are empty bitmasks.
Matching a regular expression against a sequence of characters [first, last) proceeds according to the rules of the grammar specified for the regular expression object, modified according to the effects listed in Table 119 for any bitmask elements set.
Table 119 — regex_constants::match_flag_type effects [tab:re.matchflag]
Element | Effect(s) if set |
The first character in the sequence [first, last) shall be treated
as though it is not at the beginning of a line, so the character
| |
The last character in the sequence [first, last) shall be treated
as though it is not at the end of a line, so the character
| |
The expression | |
The expression | |
If more than one match is possible then any match is an acceptable result. | |
The expression shall not match an empty sequence. | |
The expression shall only match a sub-sequence that begins at first. | |
When a regular expression match is to be replaced by a new string, the new string shall be constructed using the rules used by the ECMAScript replace function in ECMA-262, part 15.5.4.11 String.prototype.replace. In addition, during search and replace operations all non-overlapping occurrences of the regular expression shall be located and replaced, and sections of the input that did not match the expression shall be copied unchanged to the output string. | |
When a regular expression match is to be replaced by a new string, the new string shall be constructed using the rules used by the sed utility in POSIX. | |
During a search and replace operation, sections of the character container sequence being searched that do not match the regular expression shall not be copied to the output string. | |
When specified during a search and replace operation, only the first occurrence of the regular expression shall be replaced. |
28.6.4.4 Implementation-defined error_type [re.err]
namespace std::regex_constants { using error_type = T3; inline constexpr error_type error_collate = unspecified; inline constexpr error_type error_ctype = unspecified; inline constexpr error_type error_escape = unspecified; inline constexpr error_type error_backref = unspecified; inline constexpr error_type error_brack = unspecified; inline constexpr error_type error_paren = unspecified; inline constexpr error_type error_brace = unspecified; inline constexpr error_type error_badbrace = unspecified; inline constexpr error_type error_range = unspecified; inline constexpr error_type error_space = unspecified; inline constexpr error_type error_badrepeat = unspecified; inline constexpr error_type error_complexity = unspecified; inline constexpr error_type error_stack = unspecified; }
The type error_type is an implementation-defined enumerated type ([enumerated.types]).
Values of type error_type represent the error conditions described in Table 120:
Table 120 — error_type values in the C locale [tab:re.err]
Value | Error condition |
error_collate | The expression contains an invalid collating element name. |
error_ctype | The expression contains an invalid character class name. |
error_escape | The expression contains an invalid escaped character, or a trailing escape. |
error_backref | The expression contains an invalid back reference. |
error_brack | The expression contains mismatched |
error_paren | The expression contains mismatched |
error_brace | The expression contains mismatched |
error_badbrace | The expression contains an invalid range in a |
error_range | The expression contains an invalid character range, such as
|
error_space | There is insufficient memory to convert the expression into a finite state machine. |
error_badrepeat | One of |
error_complexity | The complexity of an attempted match against a regular expression exceeds a pre-set level. |
error_stack | There is insufficient memory to determine whether the regular expression matches the specified character sequence. |