Когда вы выполняете эту замену:
regex_replace("A\B+C+E\FG+\K987+54h\", Reg, "\\");
вы заменяете \\
точно на каждый шаблон, который вы соответствуете.
Чтобы получить желаемый результат, вам нужно подставить в совпавший шаблон вместе с escape-символами, например:
std::regex_replace(R"(A\B+C+E\FG+\K987+54h\)", Reg, "\\$0");
// insert \\ before the match ^^^^
Также обратите внимание, что входная строка должна экранировать специальные символы или быть записана как литерал необработанной строки.
Вот демо .