Это должно быть интересно для вас:
/\[code\]([^]]+)\[\/code\]/
Вам нужно использовать match_all, чтобы получить все значения.Кстати, в коде должен быть какой-то недостаток:
[code]blabla [code]bleh bleh[/code][/code]
Поскольку регулярное выражение не может анализировать с несколькими уровнями глубины.По крайней мере, когда глубина неизвестна.
Редактировать
/\[code\](.*)\[\/code\]/
также может быть полезным, но не будет захватывать внутренний блок.Первый соответствует только внутреннему.