Python只替换re.sub匹配的一部分

lee*_*emm 1 python regex match

以下Python脚本: re.sub("[^a-zA-Z]pi[^a-zA-Z]", "(math.pi)", "2pi3 + supirse")

结果是: '(math.pi) + supirse'

虽然之前和之后的非alpha匹配pi很关键,但我不希望在匹配中替换这些非alpha字符.我想看到以下输出:'2(math.pi)3 + supirse'

注意:先前的建议如下: re.sub("\Bpi\B", "(math.pi)", "2pi3 + supirse")

导致完全替换每个实例:'2(math.pi)3 + su(math.pi)rse'这也不是我想要的

Fir*_*Dib 5

请改用: re.sub("(?<=[^a-zA-Z])pi(?=[^a-zA-Z])", "(math.pi)", "2pi3 + supirse")

可视化:http://regex101.com/r/fX5wX3