Skip to main content
 首页 » 编程设计

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

2025年05月04日20zhengyun_ustc

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

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

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

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

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

请您参考如下方法:

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

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