Python只替换re.sub公司比赛

2024-10-02 18:24:41 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的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'这也不是我要找的


Tags: 实例re脚本字母pimath字符建议
3条回答

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

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

事实上,你需要一个小写的"\b"这意味着单词边界,而^{表示而不是单词边界。在

试试这个:

import re
re.sub(r"\bpi\b", "(math.pi)", "2pi3 + supirse")

这将产生'2pi3 + supirse'

使用前视/后视:

import re

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

具体结果见此处:http://ideone.com/rSd8H

相关问题 更多 >