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

How to stop the format ($) for boost::regex_replace in C++?

本文关键字:replace 格式 regex C++ boost      更新时间:2023-10-16

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

replacement_text = "{replace_me}"
regex = "({([^}]*[^s]*)})"
new_text = "$$$"

对于每个不包含"$"的new_text,这都很好用,new_text将完全取代replacement_text。但是当使用符号"$$$"时,它会将其截断为"$$",去掉 1 $。

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

$n

第 n 个

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

那么我怎样才能禁用它,让它不做特殊格式化呢?提前感谢!

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