Один из подходов заключается в использовании re.split
с шаблоном регулярных выражений \s*\[.*?\]\s*
для разделения ввода по временным меткам, оставляя после себя текст, который вы хотите сопоставить, как отдельные записи в списке. Я также отфильтровываю пустые строковые элементы, чтобы иметь дело с крайними случаями, когда строка может начинаться или заканчиваться временной меткой (что приведет к совпадению пустой строки слева / справа).
string = "[3/24/17, 8:34:00 PM] Hello [3/24/17, 8:35:22 PM] THIS TEXT [3/24/17, 8:39:07 PM] Bye [3/24/17, 8:39:19 PM]"
parts = re.split(r'\s*\[.*?\]\s*', string)
parts = filter(None, parts)
print(parts)
Это печатает:
['Hello', 'THIS TEXT', 'Bye']