条件字符串替换

Posted

技术标签:

【中文标题】条件字符串替换【英文标题】:Conditional string replacement 【发布时间】:2021-10-08 22:58:36 【问题描述】:

我需要根据条件替换一个字符串: 我需要用变量string1 上的变量new_term 替换变量term,但前提是我们之前没有"IS_ADDITIF""IS_FUN_ADDITIF"

这是一个例子:

term = "DIGLYCERIDES"

new_term =  "IS_ADDITIFDIGLYCERIDES,"

string1 : " FOOD ADDITIVES DIGLYCERIDES  (DIGLYCERIDES  IS_ADDITIFDIGLYCERIDES, IS_FUN_ADDITIFDIGLYCERIDES, DIGLYCERIDES     )"

newstring1= string1.replace(term, new_term)

结果如下:

newstring1 = " FOOD ADDITIVES IS_ADDITIFDIGLYCERIDES (IS_ADDITIFDIGLYCERIDES IS_ADDITIFDIGLYCERIDES, IS_FUN_ADDITIFDIGLYCERIDES, IS_ADDITIFDIGLYCERIDES )"

【问题讨论】:

【参考方案1】:

您可以使用正则表达式和两个后续的否定后向断言,然后使用 re.sub 替换匹配项

>>> import re
>>> re.sub('(?<!IS_ADDITIF\\)(?<!IS_FUN_ADDITIF\\)'+term, new_term, string1)

' FOOD ADDITIVES IS_ADDITIFDIGLYCERIDES,  (IS_ADDITIFDIGLYCERIDES,  IS_ADDITIFDIGLYCERIDES, IS_FUN_ADDITIFDIGLYCERIDES, IS_ADDITIFDIGLYCERIDES,     )'

了解模式:'(?&lt;!IS_ADDITIF\\)(?&lt;!IS_FUN_ADDITIF\\)'+term

(?<!IS_ADDITIF\\)       : String doesn't start with IS_ADDITIF
(?<!IS_FUN_ADDITIF\\)   : String doesn't start with IS_FUN_ADDITIF
term                      : Matching the value in term i.e. DIGLYCERIDES

【讨论】:

以上是关于条件字符串替换的主要内容,如果未能解决你的问题,请参考以下文章

PHP preg_replace() 正则替换所有符合条件的字符串

PostgreSQL 正则表达式用条件替换函数

根据条件替换不同文件中的字符串

Netezza SQL - 如何用条件替换两个逗号之间的字符串

在js 中 replace 怎么不能替换中文?

正则表达式查找字符串并替换它或根据条件添加额外字符