python - 正则表达式在 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 附加到字符串中
解决方案
假设 beta=10 在字符串中仅出现 0 或 1 次,您可以这样做:
dest = re.sub("(beta=\d+|$)","beta=10",source+" ",1).strip()
该模式认为行尾是 beta=\d+ 的替代匹配,并且由于我们只替换第一个匹配项,因此它仅适用于该行不包含 beta=\d+
推荐阅读
- javascript - 带有多个箭头“=>”参数的javascript函数
- kubernetes - istio webhook 失败并出现错误 dial tcp
:443: 连接:没有到主机的路由 - scala - 在这种情况下,scala 的类型检查如何工作?
- javascript - 我怎样才能拥有多个元素的可观察和订阅者?
- sqlite - SQLite 按最小差异排序结果
- java - Android Studio 项目在 java 或 xml 中都不能正常工作
- pandas - 在 datetimeindex 末尾添加 10 步
- c - 当尝试在 RayLib 2.6 中绘制矩形时,我发现了这种“流血”效果
- c - CS50 2019 Vigenere - 第二个循环
- powershell - Powershell hashtable.containskey 总是返回 true