首页 > 解决方案 > 正则表达式在 Python 中替换或添加子字符串

问题描述

我需要一个唯一的正则表达式来替换子字符串或在丢失时添加它。

例子:

set beta=10
"alpha=25 beta=42 delta=43" need to become "alpha=25 beta=10 delta=43"
"alpha=25 delta=43" need to become "alpha=25 delta=43 beta=10"

以下代码仅用于替换现有值,但如果要替换的索引不存在,则不会添加任何内容。

dest = re.sub(r'(.*)(beta=\d+)( .*)',r'\1 beta=10 \3',source)

我可以这样做,但我需要一个表达式中的这个结果:

if re.search(r'beta=\d+',source):
    dest = re.sub(r'(.*)(beta=\d+)( .*)',r'\1 beta=10 \3',source)
else:
    dest = source + " beta=10"

所以如果 beta=xx 存在于一个字符串中并且它不匹配 beta=yy 然后替换

因此,如果字符串中不存在 beta=xx,则将 beta=yy 附加到字符串中

标签: pythonregexreplace

解决方案


假设 beta=10 在字符串中仅出现 0 或 1 次,您可以这样做:

dest = re.sub("(beta=\d+|$)","beta=10",source+" ",1).strip()

该模式认为行尾是 beta=\d+ 的替代匹配,并且由于我们只替换第一个匹配项,因此它仅适用于该行不包含 beta=\d+


推荐阅读