Я использую функцию boost :: regex_replace (replace_text, regex, new_text), чтобы сделать это …
replacement_text = "{replace_me}"
regex = "(\{([^\}]*[^\s]*)\})"
new_text = "$$$"
Для каждого new_text, который не содержит «$», это прекрасно работает, new_text полностью заменит замещающий текст. Но при использовании символа «$$$» он усекает его до «$$», снимая 1 $.
Я читал, что знак доллара ($) в спецификации предназначен для специального форматирования:
$ п
n-я обратная ссылка (то есть копия n-й сопоставленной группы, указанной в скобках в шаблоне регулярных выражений).
n должно быть целочисленным значением, обозначающим действительную обратную ссылку, больше 1 и не более двух цифр.
Так как я могу отключить это, чтобы он не делал специального форматирования? Заранее спасибо!
Как вы упомянули в своем вопросе, $
это escape-последовательность в параметре форматера regex_replace
так что, как и любой другой специальный символ в PCRE (Perl-совместимое регулярное выражение), вы можете избежать его, используя \
! так что пользуйтесь \$\$\$
и так как вы используете C ++, вы должны использовать \\$\\$\\$
(конечно, ты уже знаешь это)
Других решений пока нет …