2

我只是在学习正则表达式,并且试图弄清楚如何对字符串中的字符集合进行字符串替换,而不是对每个字符进行替换(这是迄今为止我所能做的。

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

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)

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

4

1 回答 1

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)

您无需重复^.

于 2013-06-13T16:27:40.623 回答