python怎么通过正则表达式去剔除掉字符串最前/后面的连续的非数字段?

比如"daxxsd12a52d5sdaxxda"
怎么把首个数字的前面一段非数字(daxxsd)去掉
把末尾数字后面一段非数字(sdaxxda)去掉
并且把中间的非数字替换成自己想要的字符(比如?)
最终想要的结果:12?52?5

>>> import re
>>> s = "daxxsd12a52d5sdaxxda"
>>> t = re.findall(r'\d.+\d',s)[0]
>>> t
'12a52d5'
>>> t = re.sub(r'\D','?',t)
>>> t
'12?52?5'
>>> 

一条语句比较麻烦,但也是可以做到的

>>> import re
>>> a = 'daxxsd12a52d5sdaxxda'
>>> b = re.sub(r'\D*(\d+)\D(\d+)\D(\d+)\D*',r'\1?\2?\3',a)
>>> print(b)
12?52?5
import re
def remove_prefix_suffix(src, middle_char):
     result = re.sub(r"^\D*", "", src)
     result = re.sub(r"\D*$", "", result)
     result = re.sub(r"\D", middle_char, result)
     return result
print(remove_prefix_suffix("daxxsd12a52d5sdaxxda", "?"))