如何在Python中搜索和替换字符串中术语的完全匹配?

时间:2019-07-19 12:13:21

标签: python regex string

我有一个像下面这样的字符串

statement = "If you find abc in the expression abc>efg, then ignore the expression"

现在,我想用另一个术语abc替换确切的术语abc(注意find abc出现两次。首先在expression abc>efg中,然后在mno中)

所以最后句子应该看起来像

If you find mno in the expression abc>efg, then ignore the expression"

这就是我所做的

word = "abc"
print(statement.replace("abc", "mno"))

但是它将替换abc的两个实例。

我在网上查找了可能的解决方案。一种解决方案是使用regex并引入单词边界\b。所以我尝试了这种方法

re.sub(word, '', statement)

我希望它能检查单词边界(在这种情况下,abc两侧都有一个空格)并识别并替换它,但是我得到的结果与以前差不多。

If you find mno in the expression mno>efg, then ignore the expression

如何确保只替换独立的abc,而不替换附加在表达式上的那个?

4 个答案:

答案 0 :(得分:2)

下面的代码将替换第一个实例

statement.replace("abc", "mno", 1)

答案 1 :(得分:1)

您可以为replace提供可选的count参数。这只会替换前n个匹配的子字符串。

print("hello world hello".replace("hello", "REDACTED", 1))

输出:

REDACTED world hello

答案 2 :(得分:0)

如果您的目标是仅用两边的空格替换abc,则可以使用:

print(statement.replace(" abc ", " mno "))

注意“ abc”和“ mno”周围的空格

答案 3 :(得分:0)

您可以用“ mno”替换“ abc”(前后带有空格)。