Como substituir apenas o conteúdo entre colchetes usando expressões regulares?

Como substituir apenas o conteúdo entre colchetes usando expressões regulares?

String = "This is my string [123]"

Eu quero substituir 123 por 456

Desired_String = "This is my string [456]"

Minha tentativa:

regex = '.*\[(.*?)\].*'
re.sub(regex,'456',String)
>> 456

Não tenho certeza de qual regex usar para substituir o 123 por 456.

questionAnswers(2)

yourAnswerToTheQuestion