Вам нужно избегать скобок , скобок и знака плюс - если вы хотите буквально сопоставить их. Код PHP для вашего регулярного выражения будет:
$output = preg_replace('/\{\([^.{}]*\)-\}/', 'replace-string', $input);
... и ...
$output = preg_replace('/\{\([^.{}]*\)\+\}/', 'replace-string', $input);
Это будет соответствовать таким вещам, как {(abc)-}
{(abc)+}
.