2012-10-14 44 views
0

我使用boost :: regex_replace(replacement_text,正則表達式,新文本)函數來做到這一點...

replacement_text = "{replace_me}" 

regex = "(\{([^\}]*[^\s]*)\})" 

new_text = "$$$" 

對於不包含「$」每一個新文本,這個精美的作品,新文本將完全替換replacement_text。但是,當使用符號「$$$」時,它會將其截斷爲「$$」,並取消1 $。

我讀的規格,美元符號($)是特殊格式:

$ N

第n個反向引用即,第n個匹配組的副本用括號指定(在正則表達式模式)。 n必須是一個整數值,指定一個有效的反向引用,大於1,最多兩位數。

那麼,我該如何禁用它,使其不做特殊格式?提前致謝!

+1

我對boost的瞭解不多,但通常情況下,正則表達式語言允許你用反斜槓 - 即'new_text = 「\ $ \ $ \ $」' – happydave

+0

實際上,因爲它是一個C字符串,所以我想反斜槓需要被轉義 - 也許'new_text =「\\ $ \\ $ \\ $」' – happydave

回答

1

正如你在你的問題中提到,$是在regex_replace格式化參數轉義序列,所以像在PCRE任何其他特殊字符(Pe​​rl兼容的正則表達式),你可以使用\逃跑吧!所以使用\$\$\$,因爲你使用的是C++,所以你應該使用\\$\\$\\$(當然你已經知道了)

相關問題