替换字符串的部分而不是字符Python

时间:2013-06-13 16:22:18

标签: python regex

我正在学习正则表达式,我试图弄清楚如何对字符串中的字符集合进行字符串替换,而不是替换每个字符(这是我到目前为止所能发生的事情)

假设我有一个名为原始字符串的字符串:

original_string = "(cats && dogs) || (cows && chickens)"

我想用字符串“test”替换字符串中的每个单词。我想要的结果如下:

new_string = "(test && test) || (test && test)"

到目前为止,我的代码如下:

replacement = "test" 
original_string = "(cats && dogs) || (cows && chickens)"
new_string = re.sub(r'[^(,^),^&,^|]', replacement, original_string)

但这导致猫,狗,牛和鸡的每个角色都被“测试”取代。结果如下:

 (testtesttesttesttest&&testtesttesttesttest)test||test(testtesttesttesttest&&testtesttesttesttesttesttesttesttest)

如何使用正则表达式来获得我想要的结果?

1 个答案:

答案 0 :(得分:2)

您可以使用更简单的正则表达式:

replacement = "test" 
original_string = "(cats && dogs) || (cows && chickens)"
new_string = re.sub(r'[a-z]+', replacement, original_string)

[a-z]+表示字母表出现的次数超过1次。

尽管如此,尽可能保留原始正则表达式,我会使用它:

replacement = "test" 
original_string = "(cats && dogs) || (cows && chickens)"
new_string = re.sub(r'[^()|& ]+', replacement, original_string)

您无需重复^