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

プレースホルダーシーケンス

プレースホルダーシーケンスは、正規表現に対するマッチのどの部分を出力に送るかを指定する。

プレースホルダー

意味

$&

正規表現全体にマッチした部分を出力する。

$MATCH

$& と同じ。

${^MATCH}

$& と同じ。

$`

最後に見つかったマッチの終端(前回のマッチが存在しない場合はテキストの先頭)から現在のマッチの先頭までのテキストを出力する。

$PREMATCH

$` と同じ。

${^PREMATCH}

$` と同じ。

$'

現在のマッチの終端より後方のすべてのテキストを出力する。

$POSTMATCH

$' と同じ。

${^POSTMATCH}

$' と同じ。

$+

正規表現中の最後のマーク済み部分式にマッチした部分を出力する。

$LAST_PAREN_MATCH

$+ と同じ。

$LAST_SUBMATCH_RESULT

最後の部分式に実際にマッチした部分を出力する。

$^N

$LAST_SUBMATCH_RESULT と同じ。

$$

直値の ‘$’ を出力する。

$n

n 番目の部分式にマッチした部分を出力する。

${n}

n 番目の部分式にマッチした部分を出力する。

$+{NAME}

“NAME” という名前の部分式にマッチした部分を出力する。

上に挙げなかった $ プレースホルダーはすべて直値の ‘$’ として扱われる。

エスケープシーケンス

エスケープ文字の直後に文字 x が続いている場合、x が以下のエスケープシーケンス以外であればその文字を出力する。

エスケープ

意味

\a

ベル文字 ‘\a’ を出力する。

\e

ANSI エスケープ文字(コードポイント 27)を出力する。

\f

フォームフィード文字 ‘\f’ を出力する。

\n

改行文字 ‘\n’ を出力する。

\r

復改文字 ‘\r’ を出力する。

\t

タブ文字 ‘\t’ を出力する。

\v

垂直タブ文字 ‘\v’ を出力する。

\xDD

16 進数コードポイントが 0xDD である文字を出力する。

\x{DDDD}

16 進数コードポイントが 0xDDDD である文字を出力する。

\cX

ANSI エスケープシーケンス “escape-X” を出力する。

\D

D が範囲 1-9 の 10 進数字であれば、部分式 D にマッチしたテキストを出力する。

\l

次に出力する 1 文字を小文字で出力する。

\u

次に出力する 1 文字を大文字で出力する。

\L

以降 \E が現れるまで、出力する文字をすべて小文字にする。

\U

以降 \E が現れるまで、出力する文字をすべて大文字にする。

\E

\L および \U シーケンスを終了する。