re.sub(r'^[^a-zA-Z]*(.*?)[^a-zA-Z]*$', '\1', string);
圆括号捕获字符串开头和结尾的非字母字符串之间的所有内容。这个 ? 确保 . 不在结尾捕获任何非字母字符串。然后替换者只需打印捕获的组。
?
.