1<html> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4<title>Boost-Extended Format String Syntax</title> 5<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css"> 6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> 7<link rel="home" href="../../index.html" title="Boost.Regex 5.1.4"> 8<link rel="up" href="../format.html" title="Search and Replace Format String Syntax"> 9<link rel="prev" href="perl_format.html" title="Perl Format String Syntax"> 10<link rel="next" href="../ref.html" title="Reference"> 11</head> 12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> 13<table cellpadding="2" width="100%"><tr> 14<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td> 15<td align="center"><a href="../../../../../../index.html">Home</a></td> 16<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td> 17<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> 18<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> 19<td align="center"><a href="../../../../../../more/index.htm">More</a></td> 20</tr></table> 21<hr> 22<div class="spirit-nav"> 23<a accesskey="p" href="perl_format.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../format.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../ref.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a> 24</div> 25<div class="section"> 26<div class="titlepage"><div><div><h3 class="title"> 27<a name="boost_regex.format.boost_format_syntax"></a><a class="link" href="boost_format_syntax.html" title="Boost-Extended Format String Syntax">Boost-Extended 28 Format String Syntax</a> 29</h3></div></div></div> 30<p> 31 Boost-Extended format strings treat all characters as literals except for 32 '$', '\', '(', ')', '?', and ':'. 33 </p> 34<h5> 35<a name="boost_regex.format.boost_format_syntax.h0"></a> 36 <span class="phrase"><a name="boost_regex.format.boost_format_syntax.grouping"></a></span><a class="link" href="boost_format_syntax.html#boost_regex.format.boost_format_syntax.grouping">Grouping</a> 37 </h5> 38<p> 39 The characters '(' and ')' perform lexical grouping, so use \( and \) if 40 you want a to output literal parenthesis. 41 </p> 42<h5> 43<a name="boost_regex.format.boost_format_syntax.h1"></a> 44 <span class="phrase"><a name="boost_regex.format.boost_format_syntax.conditionals"></a></span><a class="link" href="boost_format_syntax.html#boost_regex.format.boost_format_syntax.conditionals">Conditionals</a> 45 </h5> 46<p> 47 The character '?' begins a conditional expression, the general form is: 48 </p> 49<p> 50 ?Ntrue-expression:false-expression 51 </p> 52<p> 53 where N is decimal digit. 54 </p> 55<p> 56 If sub-expression N was matched, then true-expression is evaluated and sent 57 to output, otherwise false-expression is evaluated and sent to output. 58 </p> 59<p> 60 You will normally need to surround a conditional-expression with parenthesis 61 in order to prevent ambiguities. 62 </p> 63<p> 64 For example, the format string "(?1foo:bar)" will replace each 65 match found with "foo" if the sub-expression $1 was matched, and 66 with "bar" otherwise. 67 </p> 68<p> 69 For sub-expressions with an index greater than 9, or for access to named 70 sub-expressions use: 71 </p> 72<p> 73 ?{INDEX}true-expression:false-expression 74 </p> 75<p> 76 or 77 </p> 78<p> 79 ?{NAME}true-expression:false-expression 80 </p> 81<h5> 82<a name="boost_regex.format.boost_format_syntax.h2"></a> 83 <span class="phrase"><a name="boost_regex.format.boost_format_syntax.placeholder_sequences"></a></span><a class="link" href="boost_format_syntax.html#boost_regex.format.boost_format_syntax.placeholder_sequences">Placeholder 84 Sequences</a> 85 </h5> 86<p> 87 Placeholder sequences specify that some part of what matched the regular 88 expression should be sent to output as follows: 89 </p> 90<div class="informaltable"><table class="table"> 91<colgroup> 92<col> 93<col> 94</colgroup> 95<thead><tr> 96<th> 97 <p> 98 Placeholder 99 </p> 100 </th> 101<th> 102 <p> 103 Meaning 104 </p> 105 </th> 106</tr></thead> 107<tbody> 108<tr> 109<td> 110 <p> 111 $& 112 </p> 113 </td> 114<td> 115 <p> 116 Outputs what matched the whole expression. 117 </p> 118 </td> 119</tr> 120<tr> 121<td> 122 <p> 123 $MATCH 124 </p> 125 </td> 126<td> 127 <p> 128 As $& 129 </p> 130 </td> 131</tr> 132<tr> 133<td> 134 <p> 135 ${^MATCH} 136 </p> 137 </td> 138<td> 139 <p> 140 As $& 141 </p> 142 </td> 143</tr> 144<tr> 145<td> 146 <p> 147 $` 148 </p> 149 </td> 150<td> 151 <p> 152 Outputs the text between the end of the last match found (or the 153 start of the text if no previous match was found), and the start 154 of the current match. 155 </p> 156 </td> 157</tr> 158<tr> 159<td> 160 <p> 161 $PREMATCH 162 </p> 163 </td> 164<td> 165 <p> 166 As $` 167 </p> 168 </td> 169</tr> 170<tr> 171<td> 172 <p> 173 ${^PREMATCH} 174 </p> 175 </td> 176<td> 177 <p> 178 As $` 179 </p> 180 </td> 181</tr> 182<tr> 183<td> 184 <p> 185 $' 186 </p> 187 </td> 188<td> 189 <p> 190 Outputs all the text following the end of the current match. 191 </p> 192 </td> 193</tr> 194<tr> 195<td> 196 <p> 197 $POSTMATCH 198 </p> 199 </td> 200<td> 201 <p> 202 As $' 203 </p> 204 </td> 205</tr> 206<tr> 207<td> 208 <p> 209 ${^POSTMATCH} 210 </p> 211 </td> 212<td> 213 <p> 214 As $' 215 </p> 216 </td> 217</tr> 218<tr> 219<td> 220 <p> 221 $+ 222 </p> 223 </td> 224<td> 225 <p> 226 Outputs what matched the last marked sub-expression in the regular 227 expression. 228 </p> 229 </td> 230</tr> 231<tr> 232<td> 233 <p> 234 $LAST_PAREN_MATCH 235 </p> 236 </td> 237<td> 238 <p> 239 As $+ 240 </p> 241 </td> 242</tr> 243<tr> 244<td> 245 <p> 246 $LAST_SUBMATCH_RESULT 247 </p> 248 </td> 249<td> 250 <p> 251 Outputs what matched the last sub-expression to be actually matched. 252 </p> 253 </td> 254</tr> 255<tr> 256<td> 257 <p> 258 $^N 259 </p> 260 </td> 261<td> 262 <p> 263 As $LAST_SUBMATCH_RESULT 264 </p> 265 </td> 266</tr> 267<tr> 268<td> 269 <p> 270 $$ 271 </p> 272 </td> 273<td> 274 <p> 275 Outputs a literal '$' 276 </p> 277 </td> 278</tr> 279<tr> 280<td> 281 <p> 282 $n 283 </p> 284 </td> 285<td> 286 <p> 287 Outputs what matched the n'th sub-expression. 288 </p> 289 </td> 290</tr> 291<tr> 292<td> 293 <p> 294 ${n} 295 </p> 296 </td> 297<td> 298 <p> 299 Outputs what matched the n'th sub-expression. 300 </p> 301 </td> 302</tr> 303<tr> 304<td> 305 <p> 306 $+{NAME} 307 </p> 308 </td> 309<td> 310 <p> 311 Outputs whatever matched the sub-expression named "NAME". 312 </p> 313 </td> 314</tr> 315</tbody> 316</table></div> 317<p> 318 Any $-placeholder sequence not listed above, results in '$' being treated 319 as a literal. 320 </p> 321<h5> 322<a name="boost_regex.format.boost_format_syntax.h3"></a> 323 <span class="phrase"><a name="boost_regex.format.boost_format_syntax.escape_sequences"></a></span><a class="link" href="boost_format_syntax.html#boost_regex.format.boost_format_syntax.escape_sequences">Escape 324 Sequences</a> 325 </h5> 326<p> 327 An escape character followed by any character x, outputs that character unless 328 x is one of the escape sequences shown below. 329 </p> 330<div class="informaltable"><table class="table"> 331<colgroup> 332<col> 333<col> 334</colgroup> 335<thead><tr> 336<th> 337 <p> 338 Escape 339 </p> 340 </th> 341<th> 342 <p> 343 Meaning 344 </p> 345 </th> 346</tr></thead> 347<tbody> 348<tr> 349<td> 350 <p> 351 \a 352 </p> 353 </td> 354<td> 355 <p> 356 Outputs the bell character: '\a'. 357 </p> 358 </td> 359</tr> 360<tr> 361<td> 362 <p> 363 \e 364 </p> 365 </td> 366<td> 367 <p> 368 Outputs the ANSI escape character (code point 27). 369 </p> 370 </td> 371</tr> 372<tr> 373<td> 374 <p> 375 \f 376 </p> 377 </td> 378<td> 379 <p> 380 Outputs a form feed character: '\f' 381 </p> 382 </td> 383</tr> 384<tr> 385<td> 386 <p> 387 \n 388 </p> 389 </td> 390<td> 391 <p> 392 Outputs a newline character: '\n'. 393 </p> 394 </td> 395</tr> 396<tr> 397<td> 398 <p> 399 \r 400 </p> 401 </td> 402<td> 403 <p> 404 Outputs a carriage return character: '\r'. 405 </p> 406 </td> 407</tr> 408<tr> 409<td> 410 <p> 411 \t 412 </p> 413 </td> 414<td> 415 <p> 416 Outputs a tab character: '\t'. 417 </p> 418 </td> 419</tr> 420<tr> 421<td> 422 <p> 423 \v 424 </p> 425 </td> 426<td> 427 <p> 428 Outputs a vertical tab character: '\v'. 429 </p> 430 </td> 431</tr> 432<tr> 433<td> 434 <p> 435 \xDD 436 </p> 437 </td> 438<td> 439 <p> 440 Outputs the character whose hexadecimal code point is 0xDD 441 </p> 442 </td> 443</tr> 444<tr> 445<td> 446 <p> 447 \x{DDDD} 448 </p> 449 </td> 450<td> 451 <p> 452 Outputs the character whose hexadecimal code point is 0xDDDDD 453 </p> 454 </td> 455</tr> 456<tr> 457<td> 458 <p> 459 \cX 460 </p> 461 </td> 462<td> 463 <p> 464 Outputs the ANSI escape sequence "escape-X". 465 </p> 466 </td> 467</tr> 468<tr> 469<td> 470 <p> 471 \D 472 </p> 473 </td> 474<td> 475 <p> 476 If D is a decimal digit in the range 1-9, then outputs the text 477 that matched sub-expression D. 478 </p> 479 </td> 480</tr> 481<tr> 482<td> 483 <p> 484 \l 485 </p> 486 </td> 487<td> 488 <p> 489 Causes the next character to be outputted, to be output in lower 490 case. 491 </p> 492 </td> 493</tr> 494<tr> 495<td> 496 <p> 497 \u 498 </p> 499 </td> 500<td> 501 <p> 502 Causes the next character to be outputted, to be output in upper 503 case. 504 </p> 505 </td> 506</tr> 507<tr> 508<td> 509 <p> 510 \L 511 </p> 512 </td> 513<td> 514 <p> 515 Causes all subsequent characters to be output in lower case, until 516 a \E is found. 517 </p> 518 </td> 519</tr> 520<tr> 521<td> 522 <p> 523 \U 524 </p> 525 </td> 526<td> 527 <p> 528 Causes all subsequent characters to be output in upper case, until 529 a \E is found. 530 </p> 531 </td> 532</tr> 533<tr> 534<td> 535 <p> 536 \E 537 </p> 538 </td> 539<td> 540 <p> 541 Terminates a \L or \U sequence. 542 </p> 543 </td> 544</tr> 545</tbody> 546</table></div> 547</div> 548<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> 549<td align="left"></td> 550<td align="right"><div class="copyright-footer">Copyright © 1998-2013 John Maddock<p> 551 Distributed under the Boost Software License, Version 1.0. (See accompanying 552 file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>) 553 </p> 554</div></td> 555</tr></table> 556<hr> 557<div class="spirit-nav"> 558<a accesskey="p" href="perl_format.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../format.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../ref.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a> 559</div> 560</body> 561</html> 562