如何在C ++中停止boost :: regex_replace的格式($)?

时间:2012-10-14 23:29:01

标签: c++ boost replace boost-regex

我正在使用boost :: regex_replace(replacement_text,regex,new_text)函数来执行此操作...

replacement_text = "{replace_me}"

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

new_text = "$$$"

对于每个不包含“$”的new_text,这样做效果很好,new_text将完全替换replacement_text。但是当使用符号“$$$”时,它会将其截断为“$$”,取消1 $。

我读到规格中的美元符号($)用于特殊格式:

$ n

第n个反向引用(即,在正则表达式模式中用括号指定的第n个匹配组的副本)。 n必须是一个整数值,指定一个有效的反向引用,大于1,最多两个数字。

那么如何禁用它以使其不进行特殊格式化?提前谢谢!

1 个答案:

答案 0 :(得分:1)

正如您在问题中提到的,$是格式化程序参数regex_replace中的转义序列,因此与PCRE中的任何其他特殊字符(Pe​​rl兼容的正则表达式)一样,您可以使用{{1}来转义它}}!所以使用\,因为你使用的是C ++,你应该使用\$\$\$(当然你已经知道了)