Вам нужно экранировать '(-)'
, потому что это совпадение с шаблоном регулярного выражения, что касается механизма регулярных выражений.Если вы не знаете, как убежать, но ваша строка не имеет реальных шаблонов, но должна быть дословно истолкована, вы должны сделать:
>>> re.sub(re.escape('my (-)'), 'your', instr)
'Hello, this is your instring'
или если ваша строка представляет собой смесь между "простой "шаблон и сложные вещи, вы можете сделать это:
>>> re.sub('[a-z]{2} %s' % re.escape('(-)'), 'your', instr)
'Hello, this is your instring'