Вы можете использовать это регулярное выражение для решения на основе разделения,
(?<=])(?=[A-Z])
Демонстрация для сплит-систем
Пример кода Python для решения на основе разделения,
import re
arr = ['A[B][q]G[boy]','A[B][q]']
for s in arr:
splittedstr = re.split('(?<=])(?=[A-Z])', s)
print(splittedstr)
печать
['A[B][q]', 'G[boy]']
['A[B][q]']
Если вам нужно решение на основе соответствия, вы можете использовать это регулярное выражение,
[A-Z](?:\[\w+])*
Демонстрация для матчей
Примеры кодов Python для решения на основе совпадений,
import re
arr = ['A[B][q]G[boy]','A[B][q]']
for s in arr:
print(re.findall(r'[A-Z](?:\[\w+])*',s))
печать
['A[B][q]', 'G[boy]']
['A[B][q]']
Используйте любую, которая подходит вам больше всего.