





Why my regex do not work ?
^ and $ — это якоря, что означает, что совпадение должно начинаться с начала строки и расширяться до конца строки.
. означает соответствие чему угодно, кроме новой строки, + означает одно или несколько, по умолчанию регулярное выражение является жадным по своей природе, поэтому оно пытается максимально соответствовать тому, где мы хотим соответствовать ( ), поэтому нам нужно немного изменить шаблон
Вы можете использовать
\([^)]+\)
$string = '(test1) (test2) (test3)';
$new = preg_replace('/\([^)]+\)/','word',$string);
echo $new;