条件字符串替换
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, )'
了解模式:'(?<!IS_ADDITIF\\)(?<!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() 正则替换所有符合条件的字符串