Non sono sicurissimo di aver capito esattamente cosa ti serve, ma a proposito di regex ricorsive, dai un'occhiata a questo codice e dimmi se fa al caso tuo:

Codice PHP:
$str "[wf_com:(wf_repeat_string:[wf_com:(wf_repeat_string:[wf_com:(wf_repeat_string:PROVA ,3)],4)],5)]";

while (
preg_match("/\\[wf_com:\\(wf_repeat_string:(\\w+\\s?|(?R)),(\\d+)\\)\\]/"$str$matches)) {
    
print_r($matches);
    
$str $matches[1];