Почему не удаляются слова между двумя разделителями в строчке с помощью регулярного выражения?

Почему не удаляются слова между двумя разделителями в строчке с помощью регулярного выражения?

import re
str = "Сэр (анг) — английский"
re.sub('(.+)', '', str)
print(str)

Ответы (3 шт):

Автор решения: Violet

как сказал MaxU:

string = "Сэр (анг) — английский"
print(re.sub(r'\(.+\)', '', string))

>>> Сэр  — английский

ну и для красоты лишний пробел можно удалять:

string = "Сэр (анг) — английский"
print(re.sub(r'\(.+\)\s', '', string))

>>> Сэр — английский
→ Ссылка
Автор решения: CrazyElf

Акцентирую внимание автора вопроса на две другие ошибки, которые исправлены в предложенном ответе, но не озвучены:

  1. Не используйте зарезервированные слова Python в качестве названий переменных, у вас это str.
  2. Результат re.sub у вас не присвоен обратно в переменную, даже если бы замена сработала, вы бы её результат не увидели.
→ Ссылка
Автор решения: Wiktor Stribiżew

Используйте

import re
text = "Сэр (анг) — английский"
text = re.sub(r'\s*\([^()]*\)', '', text)
print(text) # => Сэр — английский

См. пример работы регулярного выражения и пример работы кода.

Подробности

  • \s* - ноль и более пробельных символов
  • \( - символ (
  • [^()]* - ноль и более символов, отличных от ( и )
  • \) - символ )
→ Ссылка