如何使用re.sub搜索和替换确切的字符和数字?

时间:2018-05-20 18:14:07

标签: python regex

我正在尝试在python中使用正则表达式来搜索"p1"中的"p1 p2 p3 p10 p11 p12"并将其替换为"hi"

以下是我的Python代码:

import re

x = "p1 p2 p3 p10 p11 p12"
data = "p1"
y = re.sub(data,'hi',x)
print (y)

当前输出→hi p2 p3 hi0 hi1 hi2
期望的输出→hi p2 p3 p10 p11 p12

请帮助我理解为什么我没有得到我想要的输出。

1 个答案:

答案 0 :(得分:0)

您要做的是搜索data而不是data+" "

import re

x = "p1 p2 p3 p10 p11 p12"

data = "p1"

y = re.sub(data+" ", "hi"+" ", x)

# to replace at the end too:
if x[-len(data):] == data:
    y = y[:-len(data)] + "hi"

print (y) # hi p2 p3 p10 p11 p12

你正在取代" p1"在字符串中意味着" p11"的第一部分也被替换了。你应该一直在寻找" p1"这样你就不会取代" p11"。但是现在我们在它的末尾用空格替换了一些东西,我们需要让插入的字符串在末尾也有空格。否则,我们将删除空格。