我正在学习正则表达式,我试图弄清楚如何对字符串中的字符集合进行字符串替换,而不是替换每个字符(这是我到目前为止所能发生的事情)
假设我有一个名为原始字符串的字符串:
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)
如何使用正则表达式来获得我想要的结果?
答案 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)
您无需重复^
。