Regex заменить слово, если оно не заключено в скобки

Я пытаюсь создать регулярное выражение, где оно заменяет слова, которые не заключены в скобки.

Вот что я сейчас имею:

$this->parsed = preg_replace('/\b(?<!\[)('.preg_quote($word).')\b/','[$1['.implode(",",array_unique($types)).']]',$this->parsed); 

Где $ word может быть одним из следующих: «Burkely Mayfair Trunk» или «Trunk».

Это заменит предложение

Это Burkely Mayfair Trunk довольно приятно

для

Это [Burkely Mayfair [Trunk [productname]] [productname] довольно приятно

Хотя это должно стать

Это [Burkely Mayfair Trunk [productname]] довольно приятно

Поскольку он заменяет порядок наибольшей строки на наименьшую строку, меньшие строки и / или двойные вхождения частей слова не должны заменяться в уже замененной части строки. Он работает, когда это первая часть строки.

Когда я пытаюсь сделать динамический lookbehind, он дает следующую ошибку: «Ошибка компиляции: утверждение lookbehind не фиксированной длины при смещении 11». И я понятия не имею, как это исправить.

Любой, у кого есть идеи?

Related of "Regex заменить слово, если оно не заключено в скобки"