...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Boost-Extended format strings treat all characters as literals except for '$', '\', '(', ')', '?', and ':'.
The characters '(' and ')' perform lexical grouping, so use \( and \) if you want a to output literal parenthesis.
The character '?' begins a conditional expression, the general form is:
?Ntrue-expression:false-expression
where N is decimal digit.
If sub-expression N was matched, then true-expression is evaluated and sent to output, otherwise false-expression is evaluated and sent to output.
You will normally need to surround a conditional-expression with parenthesis in order to prevent ambiguities.
For example, the format string "(?1foo:bar)" will replace each match found with "foo" if the sub-expression $1 was matched, and with "bar" otherwise.
For sub-expressions with an index greater than 9, or for access to named sub-expressions use:
?{INDEX}true-expression:false-expression
or
?{NAME}true-expression:false-expression
Placeholder sequences specify that some part of what matched the regular expression should be sent to output as follows:
Placeholder |
Meaning |
---|---|
$& |
Outputs what matched the whole expression. |
$MATCH |
As $& |
${^MATCH} |
As $& |
$` |
Outputs the text between the end of the last match found (or the start of the text if no previous match was found), and the start of the current match. |
$PREMATCH |
As $` |
${^PREMATCH} |
As $` |
$' |
Outputs all the text following the end of the current match. |
$POSTMATCH |
As $' |
${^POSTMATCH} |
As $' |
$+ |
Outputs what matched the last marked sub-expression in the regular expression. |
$LAST_PAREN_MATCH |
As $+ |
$LAST_SUBMATCH_RESULT |
Outputs what matched the last sub-expression to be actually matched. |
$^N |
As $LAST_SUBMATCH_RESULT |
$$ |
Outputs a literal '$' |
$n |
Outputs what matched the n'th sub-expression. |
${n} |
Outputs what matched the n'th sub-expression. |
$+{NAME} |
Outputs whatever matched the sub-expression named "NAME". |
Any $-placeholder sequence not listed above, results in '$' being treated as a literal.
An escape character followed by any character x, outputs that character unless x is one of the escape sequences shown below.
Escape |
Meaning |
---|---|
\a |
Outputs the bell character: '\a'. |
\e |
Outputs the ANSI escape character (code point 27). |
\f |
Outputs a form feed character: '\f' |
\n |
Outputs a newline character: '\n'. |
\r |
Outputs a carriage return character: '\r'. |
\t |
Outputs a tab character: '\t'. |
\v |
Outputs a vertical tab character: '\v'. |
\xDD |
Outputs the character whose hexadecimal code point is 0xDD |
\x{DDDD} |
Outputs the character whose hexadecimal code point is 0xDDDDD |
\cX |
Outputs the ANSI escape sequence "escape-X". |
\D |
If D is a decimal digit in the range 1-9, then outputs the text that matched sub-expression D. |
\l |
Causes the next character to be outputted, to be output in lower case. |
\u |
Causes the next character to be outputted, to be output in upper case. |
\L |
Causes all subsequent characters to be output in lower case, until a \E is found. |
\U |
Causes all subsequent characters to be output in upper case, until a \E is found. |
\E |
Terminates a \L or \U sequence. |