...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.
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. |
$` |
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. |
$' |
Outputs all the text following the end of the current match. |
$$ |
Outputs a literal '$' |
$n |
Outputs what matched the n'th sub-expression. |
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. |