我想像下面的示例一样有条件地替换字符串(段落)中的单词:
text = "here is a semi colon and a semi as an example and here again a semi colon"
我想用“:”代替“ semi” 和 “半冒号”由“;”
但是当我这样做时:
re.sub(r'semi', r":", text)
我得到:
text = "here is a : colon and a : as an example and here again a : colon"
因此,如果文本中有“半冒号”,我就不想更改它。
我该怎么做?
答案 0 :(得分:1)
您需要前瞻(“半” 不是,后跟“冒号”):
re.sub(r'semi(?!\s*colon)', r":", text)
#'here is a semi colon and a : as an example and here again a semi colon'
答案 1 :(得分:0)
您可以捕获两个所需的输出,但是也许您想一一替换它们:
(semi colon)|(semi(?!:(\scolon)))
如果这不是您想要的表达式,则可以在regex101.com中修改/更改表达式。
您还可以在jex.im中可视化您的表达式: