Как остановить формат ($) для boost :: regex_replace в C ++?

Я использую функцию 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 и не более двух цифр.

Так как я могу отключить это, чтобы он не делал специального форматирования? Заранее спасибо!

0

Решение

Как вы упомянули в своем вопросе, $ это escape-последовательность в параметре форматера regex_replaceтак что, как и любой другой специальный символ в PCRE (Perl-совместимое регулярное выражение), вы можете избежать его, используя \! так что пользуйтесь \$\$\$ и так как вы используете C ++, вы должны использовать \\$\\$\\$(конечно, ты уже знаешь это)

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector