В Python 3.5+ вы можете использовать
s = re.sub(r'\((\d{4})\)|\([^()]*\)', r'\1', s)
Если есть (
+ 4 цифры + )
, оставьте только 4 цифры, в противном случае удалите совпадение.
См. Демонстрационный пример regex .
Подробности
\((\d{4})\)
- (
, затем группа захвата 1 соответствует четырем цифрама затем )
|
- или \([^()]*\)
- (
, затем 0+ символов, отличных от (
и )
, а затем )
.
Замена - это просто \1
обратная ссылка на значение группы 1.
ПРИМЕЧАНИЕ : чтобы использовать этот подход в версиях Python до 3.5, вам потребуетсянеобходимо использовать лямбда-выражение в качестве аргумента замены (из-за ошибки ):
s = re.sub(r'\((\d{4})\)|\([^()]*\)', lambda x: x.group(1) if x.group(1) else '', s)