Я отредактировал регулярное выражение, которое вы вставили в вопрос. Попробуйте это. https://regex101.com/r/V7GMv2/2
Надеюсь, это то, что вы ожидаете.
Поэтому я сохранил лог c для первой и второй группы одинаковыми. Что касается go о двух других, я подумал, что, поскольку фигурная закрывающая скобка не будет иметь пробела перед ним, я захватил его с помощью ^}
, то есть он будет присутствовать в качестве первого символа в строке.
Затем для третьей группы я применил ленивый подход, чтобы сопоставить все, что может быть между первой открывающейся фигурной скобкой и четвертой группой.
Опять же, предполагается, что в целом перед закрывающей скобкой нет пробела.
Кроме того, если вы не знаете, вы можете дать каждой группе уникальное имя, добавив имя группы в регулярное выражение, (?P<client>.+?)\s(?P<domain>.+?)\s{(?P<content>[\w\W\s]+?)(?P<close>^})