Есть такая регулярка которая выбирает все что находится между скобок вместе с ними, у меня никак не получается добавить исключение что бы пропускало скобку со словом table внутри. Может кто поможет.
/\[[^\]]*\]/
Вы можете использовать
'~\[(?![^][]*table)[^][]*]~'
или, если слово table должно быть целым словом:
'~\[(?![^][]*\btable\b)[^][]*]~'
См. демо регулярного выражения
Подробности
\[ - символ [(?![^][]*\btable\b) - негативный блок предварительного просмотра вперёд, который, при наличии совпадения шаблона, отменяет совпадение:
[^][]* - 0 и более символов, отличных от [ и ]\btable\b - целое слово table (если проверка на целое слово необязательна, удалите \b)[^][]* - 0 и более символов, отличных от [ и ] ] - символ ].PHP-демо:
$re = '/\[(?![^][]*\btable\b)[^][]*]/';
$str = '[kjkj] jkhjkhjk [table] [wedfwefwef] [bgfghfghf] [fvdfvd][sdfsd] [terms] [5465456] jkhjkhjkh';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
print_r($matches[0]); // => Array ( [0] => [kjkj] )
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости