Я бы сделал это следующим образом:
import re
text = 'A Fool (SEVEN000) (and His Money are S00n) Parted'
parted = re.findall(r'(.+)\s+(\S+\)[^\)]*$)',text)[0]
print(parted)
Вывод имеет следующий кортеж:
('A Fool (SEVEN000) (and His Money are', 'S00n) Parted')
Чтобы понять мое регулярное выражение, оно может быть разбито на:
1-я группа: .+
разделитель: \s+
2-я группа: \S+\)[^\)]*$
Соответствие первой группе не менее 1
символы не являются символом новой строки \n
, разделитель соответствует по крайней мере 1
символу пробела (это означает не только пробел, но и возврат каретки \r
, символ табуляции \t
и т. Д.), Наконец, но самое главное, вторая группа состоит как минимум из одного непробеласимвол, за которым следует )
, за которым следует 0
или более not- )
(т.е. любой символ, который не является )
), который простирается до конца строки, как обозначено $
.Если вы хотите использовать только пробелы вместо пробельных символов, замените \s
на
(пробел) и \S
на [^ ]