有条件地替换字符串

时间:2019-05-18 21:39:11

标签: python regex python-3.x

我想像下面的示例一样有条件地替换字符串(段落)中的单词:

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"

因此,如果文本中有“半冒号”,我就不想更改它。

我该怎么做?

2 个答案:

答案 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)))

enter image description here

RegEx

如果这不是您想要的表达式,则可以在regex101.com中修改/更改表达式。

RegEx电路

您还可以在jex.im中可视化您的表达式:

enter image description here