0

我正在使用 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,最多为两位数。

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

4

1 回答 1

1

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

于 2012-10-14T23:48:59.967 回答