Boost 拡張書式化文字列の構文
Boost 拡張書式化文字列は、‘$’、‘’、‘(’、‘)’、‘?’ および ‘.’ 以外のすべての文字を直値として扱う。
グループ化
文字 (
および )
は字句的なグループ化を行う。したがって括弧そのものを出力する場合は \(
および \)
を使用する。
条件
文字 ?
は条件式を開始する。一般形は、以下である。
?Ntrue-expression:false-expression
ただし、N
は 10 進数字である。
部分式 N
がマッチした場合、true-expression
が評価され出力に送られる。それ以外の場合は false-expression
が評価され出力に送られる。
通常、あいまいさを回避するために条件式を括弧で囲む必要がある。
例えば書式化文字列 (?1foo:bar)
は、部分式 $1 がマッチした場合は foo
で、$2 がマッチした場合は bar
で見つかった各マッチを置換する。
添字が 9 より大きい部分式にアクセスする場合は、以下を使用する。
?{INDEX}true-expression:false-expression
名前付き部分式にアクセスする場合は、以下を使用する。
?{NAME}true-expression:false-expression
プレースホルダーシーケンス
プレースホルダーシーケンスは、正規表現に対するマッチのどの部分を出力に送るかを指定する。
プレースホルダー |
意味 |
---|---|
|
正規表現全体にマッチした部分を出力する。 |
|
|
|
|
|
最後に見つかったマッチの終端(前回のマッチが存在しない場合はテキストの先頭)から現在のマッチの先頭までのテキストを出力する。 |
|
|
|
|
|
現在のマッチの終端より後方のすべてのテキストを出力する。 |
|
|
|
|
|
正規表現中の最後のマーク済み部分式にマッチした部分を出力する。 |
|
|
|
最後の部分式に実際にマッチした部分を出力する。 |
|
|
|
直値の ‘$’ を出力する。 |
|
|
|
|
|
“NAME” という名前の部分式にマッチした部分を出力する。 |
上に挙げなかった $ プレースホルダーはすべて直値の ‘$’ として扱われる。
エスケープシーケンス
エスケープ文字の直後に文字 x
が続いている場合、x
が以下のエスケープシーケンス以外であればその文字を出力する。
エスケープ |
意味 |
---|---|
|
ベル文字 ‘\a’ を出力する。 |
|
ANSI エスケープ文字(コードポイント 27)を出力する。 |
|
フォームフィード文字 ‘\f’ を出力する。 |
|
改行文字 ‘\n’ を出力する。 |
|
復改文字 ‘\r’ を出力する。 |
|
タブ文字 ‘\t’ を出力する。 |
|
垂直タブ文字 ‘\v’ を出力する。 |
|
16 進数コードポイントが 0xDD である文字を出力する。 |
|
16 進数コードポイントが 0xDDDD である文字を出力する。 |
|
ANSI エスケープシーケンス “escape-X” を出力する。 |
|
|
|
次に出力する 1 文字を小文字で出力する。 |
|
次に出力する 1 文字を大文字で出力する。 |
|
以降 |
|
以降 |
|
|