下面的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
事实上,你需要一个小写的表示而不是单词边界。在
"\b"
这意味着单词边界,而^{试试这个:
这将产生
'2pi3 + supirse'
使用前视/后视:
具体结果见此处:http://ideone.com/rSd8H
相关问题 更多 >
编程相关推荐